Visual Studio 2008のVB、いわゆる、VB9.0において、null許容型の宣言が3パターン存在します。
Dim ridesBusToWork1? As Boolean ' (1)変数名に?
Dim flag As Boolean? ' (2)型に?
Dim ridesBusToWork3 As Nullable(Of Boolean) ' (3)昔ながらの書き方に限るぜ
みなさんは、どの書き方を使ってますか?推奨されますか?
また、その理由的なものがあれば教えてください。
自分的には、C# を意識して、(2) がいいかなーって思います。
Visual Studio 2005 でこのコードはエラーになりますが、
Visual Studio 2008 で、ターゲットフレームワークを .NET Framework 2.0 にしても動きます。
VB9.0コンパイラがよろしくやってくれるんですね。
リソース
(MSDN)Visual Basic のプログラミング ガイド null 許容値型
http://msdn.microsoft.com/ja-jp/library/ms235245.aspx
なお、VBの Nothing は、null とは異なるため、以下のコードはコンパイルエラーになりません。
Dim count As Integer? = Nothing
Dim count2 As Integer = Nothing
実行結果は
count が Nothing
count2 が 0
となります。
Nothingは、任意のデータ型の既定値を表すからです。
ややこしいですな。。。