System.Nullable<T> 構造体
この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。
このクラスは Nullable 、割り当て null
ることができる値型を表します。
型は、値を割り当てることができる場合、または割り当て null
ることができる場合は null 許容と言われます。つまり、型に値がまったくないことを意味します。 既定では、たとえば、 Stringすべての参照型は null 許容ですが、たとえば、 Int32すべての値型は null 許容ではありません。
C# と Visual Basic では、値型の後の表記を使用して、値型を ?
null 許容としてマークします。 たとえば、 int?
C# または Integer?
Visual Basic では、割り当て null
可能な整数値型を宣言します。
参照型は Nullable<T> 設計上 null 許容であるため、この構造体では null 許容型として値型のみを使用できます。
このクラスは Nullable 、構造体の補完的なサポートを Nullable<T> 提供します。 このクラスでは Nullable 、null 許容型の基になる型の取得と、基になる値型がジェネリック比較および等値演算をサポートしていない null 許容型のペアに対する比較および等価演算がサポートされています。
基本的なプロパティ
構造体の Nullable<T> 2 つの基本的なメンバーは、プロパティ HasValue です Value 。 オブジェクトの HasValue プロパティ Nullable<T> が指定されている場合は true
、そのプロパティを使用してオブジェクトの値に Value アクセスできます。 プロパティがHasValue指定されているfalse
場合、オブジェクトの値は未定義であり、プロパティInvalidOperationExceptionにアクセスValueしようとすると .
ボックス化とボックス化解除
null 許容型がボックス化されると、共通言語ランタイムは、オブジェクト自体ではなく、オブジェクトの Nullable<T> 基になる値を自動的に Nullable<T> ボックス化します。 つまり、プロパティが指定されている HasValue 場合、 true
プロパティの Value 内容はボックス化されます。 null 許容型の基になる値がボックス化解除されると、共通言語ランタイムは、基になる値に初期化された新しい Nullable<T> 構造体を作成します。
HasValue
null 許容型のプロパティが指定されているfalse
場合、ボックス化操作の結果は次のようになりますnull
。 したがって、ボックス化された null 許容型がオブジェクト引数を受け取るメソッドに渡される場合、そのメソッドは null
引数が . null 許容型にボックス化解除されると null
、共通言語ランタイムは新しい Nullable<T> 構造体を作成し、その HasValue
プロパティを false
.
Windows ランタイム コンポーネント
WinMD ライブラリに Nullable<T> エクスポートされた構造体のメンバーとして型を含めることができます。
.NET