C# 2.0 では、 値型に Null が代入できるようになりましたね。
Null 許容型 というキーワードです。
書き方は
型名? 変数名
といった感じで、まぁ、ちょっと自身なさげな型宣言をしたら、Nullもあつかえるんだな~
と、覚えておくと親しみやすいかも(^^;
例) 以下の例では、変数名の宣言と同時に初期値を代入しています。
int? i = 10;
double? d1 = 3.14;
bool? flag = null;
char? letter = 'a';
int?[] arr = new int?[10];
実際には、
int? i = 10;
は、内部では、
System.Nullable<int> i = 10;
と、展開されています。
VBはこの書き方に近いですね。
VBの例)
Dim i As Nullable(Of Integer) = 10
で、その変数が null かどうかを調べるには、 HasValue を使います。
変数の値の出力には、Value も使えます。
例)
int? i = 10;
if (i.HasValue) { // null かどうかを判定
System.Console.WriteLine(i.Value);
}
else
{
System.Console.WriteLine("Nullです。");
}
null かどうか?を調べたいなら?こんな書き方は? と、おもったあなた!
はい、大丈夫です。
if (i == null)
でも、もちろんOK
このあたりまでは、感覚的についていけるのですが、
この if 文、もっと簡単にかけないかな?といいうことで、
三項演算子を使うと以下のようにシンプルに書けますね。
(同じ整数型を返すために -1 を返すようにちょっと変更)
Console.WriteLine(i == null ? -1 : i);
感覚的には、 null といった特殊な時は後回しに書いて、
Console.WriteLine(i != null ? i : -1);
と、書いたほうが好きなのですが、ま、これはご自由にということで(^^;
で、さらに C# 2.0の演算子を使うと、
Console.WriteLine(i ?? -1);
と、書けてしまうわけです。
というわけで、
??演算子(null coalescing operator )
覚えておいて損はないですよー。
VBでは残念ながら使えないようですね~。
(MSDN フォーラムで聞いてみました。)
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=463935&SiteID=7
詳しく勉強したい方は MSDN のここをご覧ください。
MSDN ライブラリ > 開発ツールと言語 > Visual Studio ドキュメント > Visual C# > C# プログラミング ガイド > null 許容型 > Null 許容型の使用
C# プログラマーズ リファレンス
Null 許容型の使用 (C# プログラミング ガイド)
http://msdn2.microsoft.com/ja-jp/library/2cf62fcy.aspx
かんけいないけど、検索で、 "??演算子" というキーワードで検索してもずえんずえんヒットしません・・・
かんけいないけど、i : -1 が横向きで、口をふにってやってるのおっちゃんの顔にしかみえんとです・・・
なお、MSDNでは、現在、「三項演算子」を「三次演算子」とTypoされてしまっているので、
これまた検索するとき大変・・・