この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

Nullable<T> 構造体

 

公開日: 2016年10月

null を割り当て可能な値型を表します。

名前空間:   System
アセンブリ:  mscorlib (mscorlib.dll 内)

[SerializableAttribute]
public struct Nullable<T>
where T : struct

型パラメーター

T

Nullable<T> ジェネリック型の基になる値型。

名前説明
System_CAPS_pubmethodNullable<T>(T)

Nullable<T> 構造体の新しいインスタンスを、指定の値に初期化します。

名前説明
System_CAPS_pubpropertyHasValue

現在の Nullable<T> オブジェクトに、基になる型の有効値があるかどうかを示す値を取得します。

System_CAPS_pubpropertyValue

有効な基になる値が割り当てられているかどうか示す、Nullable<T> の現在の値を取得します。

名前説明
System_CAPS_pubmethodEquals(Object)

現在の Nullable<T> オブジェクトが指定されたオブジェクトと等しいかどうかを示します。(ValueType.Equals(Object) をオーバーライドします。)

System_CAPS_pubmethodGetHashCode()

Value プロパティから返されるオブジェクトのハッシュ コードを取得します。(ValueType.GetHashCode() をオーバーライドします。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodGetValueOrDefault()

現在の Nullable<T> オブジェクトの値、またはこのオブジェクトの既定値を取得します。

System_CAPS_pubmethodGetValueOrDefault(T)

現在の Nullable<T> オブジェクトの値、または指定した既定値を取得します。

System_CAPS_pubmethodToString()

現在の Nullable<T> オブジェクトの値のテキスト形式を返します。(ValueType.ToString() をオーバーライドします。)

名前説明
System_CAPS_puboperatorSystem_CAPS_staticExplicit(Nullable<T> to T)

Nullable<T> インスタンスからその基になる値への明示的な変換を定義します。

System_CAPS_puboperatorSystem_CAPS_staticImplicit(T to Nullable<T>)

指定の値に初期化された新しい Nullable<T> オブジェクトを作成します。

型が値を割り当てることができるか、または割り当てることができる場合は null 許容にすると言われますnull、つまり、型にします。 既定では、参照型はすべてなどStringは、null 値がすべての値などの型、 Int32、されません。

C# および Visual Basic の場合でを使用して null 値許容と値の型をマークする、?値型の後に表記されます。 たとえば、 int? (C#) またはInteger?Visual Basic で割り当てることのできる整数値の型を宣言nullです。

Nullable<T>参照型は仕様による null 許容であるために、null 許容型として値の型のみを使用してサポートを構成します。

Nullable補完的なサポートを提供するクラス、Nullable<T>構造体。 Nullableクラスは、null 許容型の基になる型を取得をサポートし、null 許容型の型を基になる値のペアの比較と等しいかどうかの操作が汎用の比較と等しいかどうかの操作をサポートしません。

2 つの基本的なメンバー、Nullable<T>構造体は、HasValueValueプロパティです。 場合、HasValueプロパティをNullable<T>オブジェクトがtrue、オブジェクトの値をアクセスするのには、Valueプロパティです。 場合、HasValueプロパティはfalse、オブジェクトの値が定義されていないとアクセスを試みると、Valueプロパティがスローされます、InvalidOperationExceptionです。

共通言語ランタイムの基になる値のボックスを自動的に null 許容型をボックス化するときに、Nullable<T>オブジェクトは、Nullable<T>オブジェクト自体です。 つまり場合、HasValueプロパティはtrueの内容、Valueプロパティのボックス化されます。 共通言語ランタイムが新たに作成 null 許容型の基になる値がボックス化されたNullable<T>構造体の基になる値に初期化します。

場合、 HasValue null 許容型のプロパティがfalse、ボックス化操作の結果はnullします。 その結果、ボックス化変換された null 許容型がオブジェクト引数を必要とするメソッドに渡される場合は、そのメソッドに準備しなければなりません引数がケースを処理するnullです。 ときにnullが null 許容型にボックス化解除、共通言語ランタイムを作成、新しいNullable<T>構造体を初期化します、HasValueプロパティをfalseです。

以降で、.NET Framework 4.5.1を含めることができます、 Nullable<T> WinMD ライブラリにエクスポートされた構造体のメンバーとしての型。 以前は、これがサポートされていません。

次のコード例は、Microsoft Pubs サンプル データベース内のテーブルの 3 つの行を定義します。 テーブルには、null 許容ではない 2 つの列と null 許容である 2 つの列が含まれています。

using System;

class Sample 
{
    // Define the "titleAuthor" table of the Microsoft "pubs" database. 
    public struct titleAuthor 
    {
      // Author ID; format ###-##-####
      public string au_id;
      // Title ID; format AA####
      public string title_id;
      // Author ORD is nullable.
      public short? au_ord;
      // Royalty Percent is nullable.
      public int? royaltyper;
    }

    public static void Main() 
    {
      // Declare and initialize the titleAuthor array.
      titleAuthor[] ta = new titleAuthor[3];
      ta[0].au_id = "712-32-1176";
      ta[0].title_id = "PS3333";
      ta[0].au_ord = 1;
      ta[0].royaltyper = 100;

      ta[1].au_id = "213-46-8915";
      ta[1].title_id = "BU1032";
      ta[1].au_ord = null;
      ta[1].royaltyper = null;

      ta[2].au_id = "672-71-3249";
      ta[2].title_id = "TC7777";
      ta[2].au_ord = null;
      ta[2].royaltyper = 40;

      // Display the values of the titleAuthor array elements, and 
      // display a legend.
      Display("Title Authors Table", ta);
      Console.WriteLine("Legend:");
      Console.WriteLine("An Author ORD of -1 means no value is defined.");
      Console.WriteLine("A Royalty % of 0 means no value is defined.");
    }

    // Display the values of the titleAuthor array elements.
    public static void Display(string dspTitle, 
                               titleAuthor[] dspAllTitleAuthors)
    {
      Console.WriteLine("*** {0} ***", dspTitle);
      foreach (titleAuthor dspTA in dspAllTitleAuthors) {
         Console.WriteLine("Author ID ... {0}", dspTA.au_id);
         Console.WriteLine("Title ID .... {0}", dspTA.title_id);
         Console.WriteLine("Author ORD .. {0}", dspTA.au_ord ?? -1);
         Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper ?? 0);
         Console.WriteLine();       
      }
    }
}
// The example displays the following output:
//     *** Title Authors Table ***
//     Author ID ... 712-32-1176
//     Title ID .... PS3333
//     Author ORD .. 1
//     Royalty % ... 100
//     
//     Author ID ... 213-46-8915
//     Title ID .... BU1032
//     Author ORD .. -1
//     Royalty % ... 0
//     
//     Author ID ... 672-71-3249
//     Title ID .... TC7777
//     Author ORD .. -1
//     Royalty % ... 40
//     
//     Legend:
//     An Author ORD of -1 means no value is defined.
//     A Royalty % of 0 means no value is defined.

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
2.0 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: