Boxing des types Nullable (Guide de programmation C#)Boxing Nullable Types (C# Programming Guide)

Les objets basés sur des types Nullable sont boxed uniquement si l’objet n’est pas Null.Objects based on nullable types are only boxed if the object is non-null. Si HasValue a la valeur false, la référence d’objet est affectée à null au lieu du boxing.If HasValue is false, the object reference is assigned to null instead of boxing. Exemple :For example:

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

Si l’objet n’est pas null (si HasValue a la valeur true), le boxing s’applique uniquement au type sous-jacent sur lequel repose l’objet Nullable.If the object is non-null -- if HasValue is true -- then boxing occurs, but only the underlying type that the nullable object is based on is boxed. Le boxing d’un type de valeur Nullable non null convertit le type de valeur lui-même, et non pas le System.Nullable<T> qui encapsule le type de valeur.Boxing a non-null nullable value type boxes the value type itself, not the System.Nullable<T> that wraps the value type. Exemple :For example:

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 par le boxing des types non Nullable.The two boxed objects are identical to those created by boxing non-nullable types. Comme les types boxed non Nullable, ils peuvent être unboxed en types Nullable, comme dans l’exemple suivant :And, just like non-nullable boxed types, they can be unboxed into nullable types, as in the following example:

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

RemarquesRemarks

Le comportement de types Nullable quand ils sont boxed présente deux avantages :The behavior of nullable types when boxed provides two advantages:

  1. Les objets Nullable et leur équivalent boxed peuvent être testés pour chercher des valeurs Null :Nullable objects and their boxed counterpart can be tested for null:

    bool? b = null;  
    object boxedB = b;  
    if (b == null)  
    {  
      // True.  
    }  
    if (boxedB == null)  
    {  
      // Also true.  
    }  
    
  2. Les types Nullable boxed prennent en charge pleinement les fonctionnalités du type sous-jacent :Boxed nullable types fully support the functionality of the underlying type:

    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();  
    

Voir aussiSee Also

Guide de programmation C#C# Programming Guide
Types NullableNullable Types
Comment : identifier un type NullableHow to: Identify a Nullable Type