Kiedy oświadczam, że intjest nieważny
int? i=null;
Czy itutaj staje się typem referencyjnym?
Kiedy oświadczam, że intjest nieważny
int? i=null;
Czy itutaj staje się typem referencyjnym?
Odpowiedzi:
Nie, wartość null jest strukturą. To, co się dzieje, to fakt, że struktura dopuszczająca wartość null ma dwie wartości:
intfor int?, DateTimefor DateTime?itp.).HasValuejest własnością.)Po ustawieniu wartości typu danych struktura zmienia się HasValuena true.
Typy dopuszczające wartość null (przewodnik programowania w języku C #)
From Nullable Types (C # Programming Guide) :
Typy dopuszczające wartość null są wystąpieniami struktury System.Nullable.
i
Typy dopuszczające wartość null reprezentują zmienne typu wartości, którym można przypisać wartość null. Nie można utworzyć typu dopuszczającego wartość null na podstawie typu odwołania. (Typy odwołań obsługują już wartość null).
Więc nie, to nie są typy referencyjne.
Typy dopuszczające wartość null nie są typami wartości ani typami odwołań. Są bardziej podobne do typów wartości, ale mają kilka właściwości typów referencyjnych.
Oczywiście typy dopuszczające wartość null mogą być ustawione na null. Ponadto typ dopuszczający wartość null nie może spełnić structograniczenia ogólnego . Ponadto, gdy zapakujesz typ dopuszczający wartość null z HasValuerówną false, otrzymasz nullwskaźnik zamiast opakowanego typu dopuszczającego wartość null (podobna sytuacja występuje w przypadku rozpakowywania).
Te właściwości sprawiają, że typy dopuszczające wartość null nie są typami wartościowymi, ale z pewnością nie są też typami odwołań. Są one własnym, specjalnym typem wartości null.
Nie, typ Nullable jest w rzeczywistości strukturą. Środowisko wykonawcze w inteligentny sposób obsłuży ustawienie wartości zerowej za Ciebie, nadając wygląd typu referencyjnego, gdy tak nie jest ...
Typy dopuszczające wartość null nie mogą być typami odwołań.