エクスポート (0) 印刷
すべて展開
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

Nullable<T> 構造体

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

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

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

型パラメーター

T

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

Nullable<T> 型で公開されるメンバーは以下のとおりです。

  名前説明
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETNullable<T> Nullable<T> 構造体の新しいインスタンスを、指定の値に初期化します。
このページのトップへ

  名前説明
パブリック プロパティXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETHasValue現在の Nullable<T> オブジェクトに、基になる型の有効値があるかどうかを示す値を取得します。
パブリック プロパティXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETValue有効な基になる値が割り当てられているかどうか示す、Nullable<T> の現在の値を取得します。
このページのトップへ

  名前説明
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETEquals現在の Nullable<T> オブジェクトが指定されたオブジェクトと等しいかどうかを示します。 (ValueType.Equals(Object) をオーバーライドします。)
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetHashCode Value プロパティから返されるオブジェクトのハッシュ コードを取得します。 (ValueType.GetHashCode() をオーバーライドします。)
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetType現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetValueOrDefault()現在の Nullable<T> オブジェクトの値、またはこのオブジェクトの既定値を取得します。
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETGetValueOrDefault(T)現在の Nullable<T> オブジェクトの値、または指定した既定値を取得します。
パブリック メソッドXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETToString現在の Nullable<T> オブジェクトの値のテキスト形式を返します。 (ValueType.ToString() をオーバーライドします。)
このページのトップへ

  名前説明
パブリック演算子静的メンバーXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETExplicit(Nullable<T> to T)指定した Nullable<T> 値の値を返します。
パブリック演算子静的メンバーXNA Framework によるサポート汎用性のあるクラス ライブラリ によるサポートサポート対象: Windows ストア アプリ用 .NETImplicit(T to Nullable<T>)指定の値に初期化された新しい Nullable<T> オブジェクトを作成します。
このページのトップへ

型に値または null を割り当てることができる場合、その型を NULL 許容型と呼びます。null は、型に値がないことを表します。 既定で、すべての参照型は、Stringなど、null 許容ですが、すべての値型は、Int32など、できません。

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

設計上、参照型は NULL 許容型なので、Nullable<T> 構造体は、NULL 許容型としての値型の使用のみをサポートします。

Nullable クラスは、Nullable<T> 構造体への補完的なサポートを提供します。 Nullable クラスは、NULL 許容型の基になる型の取得、および基になる値型がジェネリック型の比較演算と等値演算をサポートしない NULL 許容型のペアに対する比較演算と等値演算をサポートします。

基本的なプロパティ

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

ボックス化とボックス化解除

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

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

.NET Framework 4.5.1 および Windows ランタイム コンポーネント

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

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


// This code example demonstrates the Nullable<T> class.
// The code example defines a database table in which two columns 
// are nullable. In the application, an array of rows is created 
// and initialized. The table rows could subsequently be 
// written to a database.

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

/*
This code example produces the following results:

*** 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.

*/


.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

汎用性のあるクラス ライブラリ

サポート対象 : 汎用性のあるクラス ライブラリ

Windows ストア アプリ用 .NET

サポート対象 : Windows 8

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

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

コミュニティの追加

追加
表示:
© 2015 Microsoft