Czy typy nullable są typami referencyjnymi?
Kiedy deklaruję {[1] } jako nullable
int? i=null;
Czy i
tutaj staje się typem odniesienia?
6 answers
Nie, nullable jest strukturą. Dzieje się tak, że nullable struct ma dwie wartości:
- wartość typu danych (
int
dlaint?
,DateTime
dlaDateTime?
, itd.). - wartość logiczna, która mówi, czy wartość typu danych została ustawiona. (
HasValue
jest własnością.)
Po ustawieniu wartości typu danych struktura zmienia HasValue
na true.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-05 22:58:59
From Nullable Types (C# Programming Guide):
Typy Nullable są instancjami systemu.Nullable struct.
I
Typy Nullable reprezentują zmienne typu value, którym można przypisać wartość null. Nie można utworzyć typu nullable na podstawie typu odniesienia. (Typy referencyjne obsługują już wartość null.)
Więc nie są to typy referencyjne.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-05 21:17:27
Typy Nullable nie są ani typami wartości, ani typami referencji. Są one bardziej podobne do typów wartości, ale mają kilka właściwości typów referencyjnych.
Oczywiście typy nullable mogą być ustawione na null
. Co więcej, Typ nullable nie może zaspokoić ogólnego ograniczenia struct
. Ponadto, gdy ustawisz Typ nullable z HasValue
równy false
, otrzymasz wskaźnik null
zamiast typu nullable (podobna sytuacja występuje przy rozpakowywaniu).
Te właściwości sprawiają, że typy nullable nie są wartością typy, ale na pewno nie są typami referencyjnymi. Są one własnym specjalnym typem nullable-value.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 13:13:42
Nie, Typ Nullable jest w rzeczywistości strukturą. Środowisko uruchomieniowe będzie inteligentnie obsługiwać ustawienie wartości null dla Ciebie, dając wygląd typu Odniesienia, jeśli nie jest....
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 12:24:48
Typy Nullable nie mogą być typami referencyjnymi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 12:25:33
Nie powinieneś tworzyć typu odniesienia jako typu nullable, ponieważ możesz przekazać null na jego miejsce.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-30 13:09:45