Boxing von Typen, die NULL-Werte zulassen (C#-Programmierhandbuch)Boxing Nullable Types (C# Programming Guide)

Objekte, die auf Typen basieren, die NULL-Werte zulassen, werden nur dann umschlossen, wenn das Objekt ungleich NULL ist.Objects based on nullable types are only boxed if the object is non-null. Wenn HasValue false ist, wird der Objektverweis null zugewiesen, anstatt dass er geboxt wird.If HasValue is false, the object reference is assigned to null instead of boxing. Zum Beispiel:For example:

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

Wenn das Objekt ungleich NULL und HasValue true ist, kommt es zum Boxing. Allerdings wird nur der zugrunde liegende Typ, auf dem das auf NULL festlegbare Objekt basiert, geboxt.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. Das Boxing eines nicht auf NULL festlegbaren Werttyps umschließt den Werttyp selbst und nicht das System.Nullable<T>-Objekt, das den Werttyp umschließt.Boxing a non-null nullable value type boxes the value type itself, not the System.Nullable<T> that wraps the value type. Zum Beispiel:For example:

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

Die beiden geboxten Objekte stimmen mit Objekten überein, die beim Boxing von nicht auf NULL festlegbaren Typen entstehen.The two boxed objects are identical to those created by boxing non-nullable types. Sie können, genauso wie nicht auf NULL festlegbare Typen, in auf NULL festlegbare Typen „ausgewickelt“ werden, so wie in folgendem Beispiel: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;  

HinweiseRemarks

Das Verhalten von umschlossenen, auf NULL festlegbaren Typen hat zwei Vorteile:The behavior of nullable types when boxed provides two advantages:

  1. Auf NULL festlegbare Objekte und ihre umschlossenen Gegenstücke könne auf NULL getestet werden: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. Umschlossene, auf NULL festlegbare Typen unterstützen die Funktionen des zugrundeliegenden Typs vollständig: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();  
    

Siehe auchSee Also

C#-ProgrammierhandbuchC# Programming Guide
Typen mit NullwertNullable Types
Gewusst wie: Identifizieren eines Typs mit NullwertenHow to: Identify a Nullable Type