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は、任意のデータ型の既定値を表すからです。

ややこしいですな。。。