143 votes

Les types nullables font-ils référence?

quand je déclare un int nullable

 int? i=null;
 

Est-ce que i devient ici un type de référence?

143voto

Kevin Points 57797

Non, un nullable est une struct. Ce qui se passe, c'est que la structure nullable a deux valeurs.

  1. La valeur du type de données (int pour int ?, DateTime pour DateTime? Etc.).
  2. Une valeur booléenne qui indique si la valeur du type de données a été définie (HasValue est la propriété).

Lorsque vous définissez la valeur du type de données, la structure modifie la valeur HasValue en true.

Qu'est-ce qu'un nullable

27voto

ChrisF Points 74295

À Partir De Types Nullables (Guide De Programmation C#):

Les types nullables sont des instances du Système.Nullable struct.

et

Les types nullables représentent des variables de type de valeur qui peut être attribuée à la valeur null. Vous ne pouvez pas créer un type nullable sur la base d'un type de référence. (Les types de référence déjà l'appui de la valeur null.)

Donc, non, ils sont pas de types de référence.

16voto

Stephen Cleary Points 91731

Les types nullables sont ni des types de valeur ni de types de référence. Ils sont plus comme des types de valeur, mais ont quelques propriétés de types de référence.

Naturellement, les types nullables peut être fixé à n' null. En outre, un type nullable ne peut pas satisfaire un générique struct contrainte. Aussi, lorsque vous zone un type nullable avec HasValue égal à false, vous obtenez un null pointeur à la place d'un coffret de type nullable (une situation similaire existe avec unboxing).

Ces propriétés en font des types nullables non-types de valeur, mais il est certain qu'ils ne sont pas les types de référence. Ils sont leur propre nullable-type de la valeur.

6voto

Matthew Abbott Points 32861

Non, le type Nullable est en fait une structure. Le moteur d'exécution gérera intelligemment la définition d'une valeur nulle pour vous, donnant l'apparence d'un type de référence, quand ce n'est pas ....

1voto

Damien Dennehy Points 1614

Les types nullables ne peuvent pas être des types de référence.

http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X