Lorsque je déclare un int
comme nullable
int? i=null;
i
devient-il ici un type de référence?
Non, un nullable est une structure. Ce qui se passe, c'est que la structure nullable a deux valeurs:
int
pour int?
, DateTime
pour DateTime?
, etc.).HasValue
est la propriété.)Lorsque vous définissez la valeur du type de données, la structure change HasValue
en true.
De Types Nullable (Guide de programmation C #) :
Les types nullables sont des instances de la structure System.Nullable.
et
Les types nullables représentent des variables de type valeur auxquelles la valeur null peut être affectée. Vous ne pouvez pas créer un type nullable basé sur un type de référence. (Les types de référence prennent déjà en charge la valeur nulle.)
Donc, ce ne sont pas des types de référence.
Les types nullables ne sont ni des types de valeur ni des types de référence. Ils ressemblent davantage à des types de valeur, mais ont quelques propriétés de types de référence.
Naturellement, les types nullables peuvent être définis sur null
. De plus, un type nullable ne peut pas satisfaire une contrainte générique struct
. En outre, lorsque vous encadrez un type nullable avec HasValue
égal à false
, vous obtenez un pointeur null
au lieu d'un type nullable encadré (une situation similaire existe avec le déballage).
Ces propriétés font des types nullable des types sans valeur, mais elles ne sont pas non plus des types de référence. Ils sont leur propre type spécial de valeur nullable.
Non, le type Nullable est en fait une structure. Le runtime gérera intelligemment le réglage d'une valeur nulle pour vous, donnant l'apparence d'un type de référence, quand ce n'est pas ...
Les types nullables ne peuvent pas être des types de référence.
Vous ne devriez pas avoir besoin de faire d'un type de référence un type nullable car vous pouvez passer null à sa place.