Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Conversion boxing des types nullables

Conversion boxing des types nullables (Guide de programmation C#)

Les objets basés sur des types nullables sont boxed uniquement si l'objet n'est pas null. Si HasValue est false, au lieu de boxing, la référence d'objet est simplement assignée à null. Par exemple :

bool? b = null;
object o = b;
// Now o is null.

Si l'objet n'est pas null (si HasValue est true) la conversion boxing a lieu, mais seul le type sous-jacent sur lequel l'objet nullable est basé est boxed. La conversion boxing d'un type valeur nullable non null convertit le type valeur lui-même, pas le System.Nullable qui encapsule le type valeur. Par exemple :

bool? b = false;
int? i = 44;
object bBoxed = b; // bBoxed contains a boxed bool.
object iBoxed = i; // iBoxed contains a boxed int.

Les deux objets boxed sont identiques à ceux créés en convertissant des types non nullables. Et, comme les types boxed non nullables, ils peuvent être unboxed en types nullables, comme suit :

bool? b2 = (bool?)bBoxed;
int? i2 = (int?)iBoxed;

Le comportement de types nullables lorsqu'ils sont boxed a deux avantages :

  1. Les objets nullables et leur équivalent boxed peuvent être testés pour chercher des valeurs null :

      bool? b = null;
      object boxedB = b;
      if (b == null)
      {
        // True.
      }
      if (boxedB == null)
      {
        // Also true.
      }
    
  2. Les types nullables boxed prennent en charge pleinement les fonctionnalités du type sous-jacent :

      double? d = 44.4;
      object iBoxed = d;
      // Access IConvertible interface implemented by double.
      IConvertible ic = (IConvertible)iBoxed;
      int i = ic.ToInt32(null);
      string str = ic.ToString();
    

Pour obtenir d'autres exemples sur les types nullables, y compris le comportement de conversion boxing, consultez Type nullable, exemple.

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft