Czy typ wartościowy struct może mieć pola chronione?
A po co? :)
Jak trudne bądź czasochłonne jest przetestowanie tego? :|
To pewnie minuta na sprawdzenie :) A tak poz tym to struktury są domyślnie sealed, więc protected średnio miałby tu co robić ;)
"Struct members can have public, internal, or private declared accessibility and default to
private declared accessibility because structs are implicitly sealed. Struct members introduced in a
struct (that is, not inherited by that struct) cannot have protected or protected internal
declared accessibility. [Note: A type declared as a member of a struct can have public, internal, or
private declared accessibility, whereas a type declared as a member of a namespace can have only
public or internal declared accessibility."
Struktura to klasa niejawnie zapieczętowana dziedzicząca po [mscorlib]System.ValueType
, po której nie można dziedziczyć. Dlatego niepotrzebny jest już modyfikator protected
Struktura jest przechowywana mówiąc w uproszczeniu - na stosie . Kopiowana jest przez wartość .
i taka ściąga :
- Zmienne lokalne
a) - przechowujące egzemplarze typów wartościowych są przechowywane na stosie
b) - przechowujące referencje do typów referencyjnych są przechowywane na stosie
-
Pola
a) - pola struktur przechowujące referencje do typów referencyjnych i egzemplarze typów wartościowych są przechowywane na stosie
b) - pola klas przechowujące referencje do typów referencyjnych i egzemplarze typów wartościowych są przechowywane są na stercie -
Parametry
a) - parametry funkcji przechowujące referencje do typów referencyjnych i egzemplarze typów wartościowych są przechowywane na stosie. -
- Elementy tablic
a) elementy tablic przechowujące referencje do typów referencyjnych i egzemplarze typów wartościowych
są przechowywane na stercie
- Elementy tablic
Zimny Krawiec napisał(a):
Struktura to klasa
Struktura to nie klasa, to wręcz przeciwieństwo klasy.
W sumie to masz rację . Mamy język C# i CLI . W CLI klasa ma trochę szersze znaczenie .
Ma ogromne znaczenie, bo wprowadzasz ludzi w błąd.
Struktura to struktura, klasa to klasa, interfejs to interfejs, delegat to delegat, a wskaźnik to wskaźnik. To są zupełnie różne rzeczy, co je łączy to to, że wszystkie one są typami. Hierarchia dziedziczenia w .NET to odrębny temat niż koncepcje z języka.
somekind napisał(a):
Ma ogromne znaczenie, bo wprowadzasz ludzi w błąd.
Struktura to struktura, klasa to klasa, interfejs to interfejs, delegat to delegat, a wskaźnik to wskaźnik. To są zupełnie różne rzeczy, co je łączy to to, że wszystkie one są typami. Hierarchia dziedziczenia w .NET to odrębny temat niż koncepcje z języka.
OK OK . W języku CLI KLASA ma takie znaczenie jak TYP . Jak zwał tak zwał . Wiadomo o co chodzi
"For historical reasons, many of the syntactic categories used for defining types incorrectly
use “class” instead of “type” in their name. All classes are types, but “types” is a broader term
encompassing value types, and interfaces as well."