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:[http://d.hatena.ne.jp/uehaj/20071220/1200971220:title=ここ]とか[http://d.hatena.ne.jp/uehaj/20090831/1251730779:title=ここ]とか[http://mail.openjdk.java.net/pipermail/coin-dev/2009-March/000047.html:title=ここ]参照。