C#をつつく28-Null許容型。白黒つけられない時もある。
例えば、付き合っている異性からいきなり「私と結婚する?YesかNoで答えなさいぃ!」と言われたら慌てるよね?そりゃ、好きだから付き合っているんだけど、いきなり結婚といわれてもYesと言えないし、かといって、将来結婚するかもしれないからNoと断言できないし・・・こんな白黒つけられないbool型な時は、現状ではどちらとも言えない(Null)と答えよう♪それがNull許容型なんだ。 こんな時はこう宣言するといいピヨ。
'結婚するかまだわからない
bool? marryFlag = null;
値型名? 変数名で宣言するピヨ。
これでゆっくりと結婚について考えられるピヨ♪そして時が経てば・・・
//時が経って
Console.WriteLine( "私の答えは・・・{0}だ。", marryFlag.Value );
if ( marryFlag.HasValue == true ) {
Console.WriteLine( "さあどっち?" );
Console.WriteLine( "私の答えは・・・{0}だ。", marryFlag.Value );
}
else {
Console.WriteLine( "優柔不断な人ね!" );
}
この二人のプログラムをつつこう♪まずNullかどうかを判定するのは HasValueピヨ。このプロパティの値がTrueならばnullでなくて、Falseならばまだnullなんだ。 Null許容型を扱う際にはHasValueをチェックしよう。 まだ決断していないかもしれないからね。チェックしないと・・・
InvalidOperationException Null 許容のオブジェクトには値を指定しなければなりません。
って言われるよ。二人の仲は破談だね。最初に言ったけどbool型以外の値型もNull許容型が使えるピヨ。この場合はまだ決定してない値と考えるといいピヨ。 例えば、給与の手取り額がまだわからない時がある。そんな時はNull許容型を使用しよう。 他にもNull許容型を使用する理由として、指定されたのか判定するためという事もあるんだ。もし、0とかだと、0と指定したのか、そもそも指定していないのかがわからないピヨ。そんな時はNull許容型の出番だピヨ。
ただし、Null許容型はパフォーマンスが劣化 する事に注意してね。だから多用せずに絶対に必要なときだけ使用しよう。インドリからのお願いだよ。