Nullable クラス
アセンブリ: mscorlib (mscorlib.dll 内)
構文
解説
型に値または null 参照 (Visual Basic では Nothing) を割り当てることができる場合、その型を NULL 許容型と呼びます。null は、型に値がないことを表します。そのため、NULL 許容型では、値を表すことも、値がないことを表すこともできます。たとえば、String のような参照型は、NULL 許容型です。Int32 のような値型は、NULL 許容型ではありません。値型は、その型に適した値を表すだけの容量しかなく、null 値を表すための追加の容量がないので、NULL 許容型ではありません。
Nullable クラスは、Nullable 構造体への補完的なサポートを提供します。Nullable クラスは、NULL 許容型の基になる型の取得、および基になる値型がジェネリック型の比較演算と等値演算をサポートしない NULL 許容型のペアに対する比較演算と等値演算をサポートします。
シナリオ状況によって値の有無が決定される場合、この値を表すために NULL 許容型を使用します。たとえば、HTML タグのオプションの属性が特定のタグに存在し、別のタグには存在しない場合や、データベース テーブルで null が許容される列が同じテーブル内の特定の行に存在し、別の行には存在しない場合などです。
属性または列をクラス内のフィールドとして表し、そのフィールドを値型として定義できます。このフィールドには、属性または列を表すすべての有効な値を格納できますが、属性または列が存在しないことを表す追加の値を格納できません。この場合は、フィールドを値型ではなく、NULL 許容型として定義します。
System.Nullable
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Nullable コンストラクタ
アセンブリ: mscorlib (mscorlib.dll 内)
構文
解説
Nullable コンストラクタによって、新しい Nullable オブジェクトの HasValue プロパティが true に初期化され、Value プロパティが value パラメータの値に初期化されます。
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Nullable ジェネリック構造体
アセンブリ: mscorlib (mscorlib.dll 内)
構文
型に値または null 参照 (Visual Basic では Nothing) を割り当てることができる場合、その型を NULL 許容型と呼びます。null は、型に値がないことを表します。そのため、NULL 許容型では、値を表すことも、値がないことを表すこともできます。たとえば、String のような参照型は、NULL 許容型です。Int32 のような値型は、NULL 許容型ではありません。値型は、その型に適した値を表すだけの容量しかなく、null 値を表すための追加の容量がないので、NULL 許容型ではありません。
設計上、参照型は NULL 許容型なので、Nullable 構造体は、NULL 許容型としての値型の使用のみをサポートします。
Nullable クラスは、Nullable 構造体への補完的なサポートを提供します。Nullable クラスは、NULL 許容型の基になる型の取得、および基になる値型がジェネリック型の比較演算と等値演算をサポートしない NULL 許容型のペアに対する比較演算と等値演算をサポートします。
シナリオ状況によって値の有無が決定される場合、この値を表すために NULL 許容型を使用します。たとえば、HTML タグのオプションの属性が特定のタグに存在し、別のタグには存在しない場合や、データベース テーブルの null 許容列が同じテーブル内の特定の行に存在し、別の行には存在しない場合などです。
属性または列をクラス内のフィールドとして表し、そのフィールドを値型として定義できます。このフィールドには、属性または列を表すすべての有効な値を格納できますが、属性または列が存在しないことを表す追加の値を格納できません。この場合は、フィールドを値型ではなく、NULL 許容型として定義します。
Nullable 構造体の 2 つの基本的なメンバは、HasValue プロパティと Value プロパティです。Nullable オブジェクトの HasValue プロパティが true の場合、オブジェクトの値にアクセスするには、Value プロパティを使用します。HasValue プロパティが false で、オブジェクトの値が定義されていない場合に、Value プロパティにアクセスしようとすると、InvalidOperationException がスローされます。
Microsoft Pubs サンプル データベースのテーブル内の 3 つの行を定義するコード例を次に示します。このテーブルには、null 非許容列が 2 列と null 許容列が 2 列含まれます。
' This code example demonstrates the Nullable(Of 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. Imports System Class Sample ' Define the "titleAuthor" table of the Microsoft "pubs" database. Public Structure titleAuthor ' Author ID; format ###-##-#### Public au_id As String ' Title ID; format AA#### Public title_id As String ' Author ORD is nullable. Public au_ord As Nullable(Of Short) ' Royalty Percent is nullable. Public royaltyper As Nullable(Of Integer) End Structure 'titleAuthor Public Shared Sub Main() ' Declare and initialize the titleAuthor array. Dim ta(2) As titleAuthor 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 = Nothing ta(1).royaltyper = Nothing ta(2).au_id = "672-71-3249" ta(2).title_id = "TC7777" ta(2).au_ord = Nothing 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.") End Sub 'Main ' Display the values of the titleAuthor array elements. Public Shared Sub Display(ByVal dspTitle As String, _ ByVal dspAllTitleAuthors() As titleAuthor) Console.WriteLine("*** {0} ***", dspTitle) Dim dspTA As titleAuthor For Each 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.GetValueOrDefault(-1)) Console.WriteLine("Royalty % ... {0}", dspTA.royaltyper.GetValueOrDefault(0)) Console.WriteLine() Next dspTA End Sub 'Display End Class 'Sample ' '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. '
// 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. */
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
Nullable プロパティ
Nullable メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Equals | オーバーロードされます。 オーバーライドされます。 Nullable と他のオブジェクトの値が等しいかどうかを示します。 | |
GetHashCode | オーバーライドされます。 Value プロパティから返されるオブジェクトのハッシュ コードを取得します。 | |
GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) | |
GetValueOrDefault | オーバーロードされます。 現在の Nullable オブジェクトの値、または既定値を取得します。 | |
op_Explicit | 指定した Nullable 値の値を返します。 | |
op_Implicit | 指定の値に初期化された新しい Nullable オブジェクトを作成します。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) | |
ToString | オーバーライドされます。 現在の Nullable オブジェクトの値のテキスト形式を返します。 |
Nullable メソッド
パブリック メソッド
名前 | 説明 | |
---|---|---|
Compare | 2 つの Nullable オブジェクトの相対値を比較します。 | |
Equals | オーバーロードされます。 | |
GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) | |
GetUnderlyingType | 指定した NULL 許容型の基になる型を返します。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) | |
ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |
Nullable メンバ
参照型のように null 参照 (Visual Basic では Nothing) を割り当てることができる値型をサポートします。このクラスは継承できません。
Nullable データ型で公開されるメンバを以下の表に示します。
パブリック メソッド
名前 | 説明 | |
---|---|---|
Compare | 2 つの Nullable オブジェクトの相対値を比較します。 | |
Equals | オーバーロードされます。 | |
GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) | |
GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) | |
GetUnderlyingType | 指定した NULL 許容型の基になる型を返します。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) | |
ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |
Nullable メンバ
基になる型が値型のオブジェクトを表します。参照型のように null 参照 (Visual Basic では Nothing) も割り当てることができます。
Nullable ジェネリック型で公開されるメンバを以下の表に示します。
パブリック コンストラクタ
パブリック プロパティ
パブリック メソッド
名前 | 説明 | |
---|---|---|
Equals | オーバーロードされます。 オーバーライドされます。 Nullable と他のオブジェクトの値が等しいかどうかを示します。 | |
GetHashCode | オーバーライドされます。 Value プロパティから返されるオブジェクトのハッシュ コードを取得します。 | |
GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) | |
GetValueOrDefault | オーバーロードされます。 現在の Nullable オブジェクトの値、または既定値を取得します。 | |
op_Explicit | 指定した Nullable 値の値を返します。 | |
op_Implicit | 指定の値に初期化された新しい Nullable オブジェクトを作成します。 | |
ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) | |
ToString | オーバーライドされます。 現在の Nullable オブジェクトの値のテキスト形式を返します。 |
- Nullableのページへのリンク