Czy typy odwołań do typów dopuszczających wartość null?


Odpowiedzi:



26

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.


14

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.


6

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 ...


2
Zapytałbym „inteligentnie obsłużyć”, raczej subiektywne. Osobiście uważam to zachowanie za mylące i często denerwujące.
nicodemus13


0

Nie powinno być konieczne tworzenie typu referencyjnego dopuszczającego wartość null, ponieważ w jego miejsce można przekazać wartość null.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.