Quand je déclare un int
comme nullable
int? i=null;
Devient i
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 prend la valeur HasValue
true.
À partir des types Nullable (Guide de programmation C #) :
Les types Nullable sont des instances de la structure System.Nullable.
et
Les types Nullable représentent des variables de type valeur auxquelles la valeur null peut être attribué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, non, ce ne sont pas des types de référence.
Les types Nullable ne sont ni des types valeur ni des types référence. Ils ressemblent plus à des types valeur, mais ont quelques propriétés de types référence.
Naturellement, les types Nullable peuvent être définis sur null
. De plus, un type Nullable ne peut pas satisfaire une struct
contrainte générique . En outre, lorsque vous boxez un type Nullable avec HasValue
égal à false
, vous obtenez un null
pointeur au lieu d'un type Nullable boxé (une situation similaire existe avec le déballage).
Ces propriétés font des types Nullable des types non-valeur, mais elles ne sont certainement pas non plus des types de référence. Il s'agit de leur propre type de valeur Nullable spécial.
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 le cas ...
Les types Nullable ne peuvent pas être des types référence.
http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx
la source
Vous ne devriez pas avoir besoin de faire d'un type référence un type Nullable car vous pouvez passer null à sa place.
la source