No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

C#のNull許容型(Nullable)について

null 許容型は、System.Nullable 構造体のインスタンスらしい。
C#では型に ? をつけるとNullを許容するようにできる。

int? i = null; // nullが入れられるint型

??演算子

??演算子を使うと、型がnullでなかった場合は左辺、nullだったら右辺になる。

int y = x ?? -1; // xがnullでないならx, nullなら-1

Null許容型がnullだった場合の初期値を設定するみたいな意味合いらしい。
Groovyのエルビス演算子*1みたいな感じですね。

HasValueプロパティとValueプロパティ

HasValueで値がnullでないかテストし、Valueで取得する。

if(x.HasValue) j = x.Value;
// ↓もしくは == null でもよいみたい
if(x == null) j = x.Value;

*1:こことかこことかここ参照。