null許容型

C#2.0からnull許容型という機能が提供されました。
通常、intなどの値型はnullを代入することが出来ません。そのためデフォルト値が代入されているのか、
意図した値が代入されているのかの判別が難しいという欠点がありました。
そんな問題を解決する方法としてnull許容型が導入されました。

null許容型の定義

null許容型を定義する場合、型名の後ろに「?」をつけます。

int? i = null;

Nullable<T>構造体

null許容型の実態はNullable<T>構造体というものです。
そのためnull許容型は以下にようにも記述できます。

System.Nullable<int> i = null;

Nullable<T>構造体にはHasValueとValueというプロパティがあります。

int? i = 1;

if(i.HasValue) { // HasValueは 値がnullの場合にfalse、null以外の場合はtrueを返すプロパティ
    System.Console.WriteLine(i.Value); // Valueは値を返すプロパティ
}

null合体演算子

null判定を簡易的に記述できる方法としてnull合体演算子という演算子があります。
null合体演算子は左側のオペランドがnullでない場合には左側のオペランドを返し、nullである場合には右側のオペランドを返すというものです。

int? i = null;
int x = i ?? 1; // ??の左側がnullでは無い場合は左側の値を返し、nullの場合、??の右側の値を返す


inserted by FC2 system