クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
Visual Studio 2005
Visual Studio ドキュメント
Visual C#
C# プログラミング ガイド
null 許容型
 null 許容型のボックス化

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2005/.NET Framework 2.0

その他のバージョンについては、以下の情報を参照してください。
C# プログラミング ガイド
null 許容型のボックス化 (C# プログラミング ガイド)

null 許容型に基づくオブジェクトは、null 以外の場合にのみボックス化されます。HasValuefalse の場合は、ボックス化ではなく、単にオブジェクト参照が null に代入されます。たとえば、次のように指定します。

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

オブジェクトが null 以外の場合 (HasValuetrue の場合)、ボックス化が実行されますが、null 許容オブジェクトの基になる型のみがボックス化されます。null 以外の null 許容値型のボックス化では、その値型自体がボックス化され、その値型をラップする System.Nullable はボックス化されません。次に例を示します。

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

上の例のボックス化された 2 つのオブジェクトは、null 非許容型のボックス化によって作成されたオブジェクトと同じです。また、ボックス化された null 非許容型と同様に、null 許容型にボックス化解除できます。この例を次に示します。

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

ボックス化された場合の null 許容型の動作には、次の 2 つの利点があります。

  1. null 許容オブジェクトとそのボックス化されたオブジェクトは、次のように null であるかどうかをテストできます。

      bool? b = null;
      object boxedB = b;
      if (b == null)
      {
        // True.
      }
      if (boxedB == null)
      {
        // Also true.
      }
  2. ボックス化された null 許容型は、次のように基になる型の機能を完全にサポートします。

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

ボックス化の動作を含む、null 許容型のその他の例については、「null 許容のサンプル」を参照してください。

コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker