[C#] nullable

NullableなGeneric classに元の型を与えると、その型のnullable classができる。

Nullable<DateTime> ndt;
DateTime? ndt;

いずれでも同じ意味になる。
nullableな型では、ToString()とGetHashCodeがoverrideされている。ただし、引数なしのToString()がoverrideされているだけなので、()内にフォーマットを指定することはできない。

ndt.ToString()  // OK
ndt.ToString("D")   // NG

Valueプロパティ(元の型の値)を使って次のようにできる。

if (ndt.HasValue)
{
    ndt.Value.ToString("D");
    ndt.Value.ToLongDateString();
}

nullableからnullableではない元の型に戻すにはnullの処理が必要。
このとき、GetValueOrDefaultを使って

DateTime dt = ndt.GetValueOrDefault();
DateTime dt = ndt.GetValueOrDefault(new DateTime(1990,1,1));

のようにする。2番目はnullのときに使う値を指定している。

広告
%d人のブロガーが「いいね」をつけました。