無差別に技術をついばむ鳥

情報処理技術全般を気まぐれに研究するブログです

C++/CLIをつつく28−Null許容型。白黒つけられない時もある。

今回はNull許容型をつつくピヨ。Null許容型というのは、その名の通りNullを許す値型の事なんだ。値型というのは、System.Int32、System.Int16、System.Booleanなどのシステム型(組み込み型)の事なんだ。じゃあなんでこんなのが必要なのかというと、主な理由はDataBaseでNull値を結構使うからなんだ(トラブルの元だけどね)Null値を使うことの意義について分かりにくいと思うので、例を挙げて説明するピヨ。
例えば、付き合っている異性からいきなり「私と結婚する?YesかNoで答えなさいぃ!」と言われたら慌てるよね?そりゃ、好きだから付き合っているんだけど、いきなり結婚といわれてもYesと言えないし、かといって、将来結婚するかもしれないからNoと断言できないし・・・こんな白黒つけられないSystem.Boolean型な時は、現状ではどちらとも言えない(Null)と答えよう♪それがNull許容型なんだ。 こんな時はこう宣言するといいピヨ。


//結婚するかまだわからない
Nullable< System::Boolean >^ marry = nullptr;


Nullable< 値型名 >^ で宣言するピヨ。
これでゆっくりと結婚について考えられるピヨ♪そして時が経てば・・・


//時が経って
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許容型はパフォーマンスが劣化 する事に注意してね。だから多用せずに絶対に必要なときだけ使用しよう。インドリからのお願いだよ。
別窓 | C++/CLI | コメント:1 | トラックバック:0 | ∧top | under∨
<<LINQをつつく1−IEnumerableから始まるLINQ♪ | 無差別に技術をついばむ鳥 | C#をつつく28−Null許容型。白黒つけられない時もある。>>

この記事のコメント

> 値型というのは、System.Int32、System.Int16、System.Booleanなどのシステム型(組み込み型)の事なんだ。

組み込み型だけじゃありません。

2009-05-01 Fri 09:32 | URL | επιστημη #-[ 内容変更]
∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |