Aracılığıyla paylaş


Kutulama Nullable türleri (c Programlama Kılavuzu #)

Nesne olmayan null ise NULL türlerine göre nesneleri yalnızca Kutulu.HasValue Olan false, nesne başvurusu için atanmış null kutulama yerine.Örne?in:

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

Nesne boş olmayan--ise, HasValue olan true --sonra boxing oluşur, ancak null olabilecek nesnenin dayandığı temel alınan tür Kutulu.Null olmayan null değer türü boxing kutularına değer türü, kendisini değil System.Nullable<T> , değer türü sarar.Örne?in:

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

İki kutu nesneleri kutulama yapılamayan türleri tarafından oluşturulanlar aynıdır.Ve hemen yapılamayan kutulanmış türleri gibi bunlar aşağıdaki örnekte olduğu gibi null yapılabilir türler içine kutulanmamış olabilir:

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

Notlar

Kutulu olduğunda null yapılabilir türler davranışını iki avantajı vardır:

  1. NULL olabilecek nesneleri ve bunların kutulanmış karşılığı null için test edilebilir:

      bool? b = null;
      object boxedB = b;
      if (b == null)
      {
        // True.
      }
      if (boxedB == null)
      {
        // Also true.
      }
    
  2. Kutulanmış nullable türleri için temel alınan tür işlevselliğinin tam destek:

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

Ayrıca bkz.

Görevler

Nasıl yapılır: null türü (C# Programlama Kılavuzu) tanımlamak

Başvuru

NULL olabilecek türleri (C# Programlama Kılavuzu)

Kavramlar

C# Programlama Kılavuzu