VB.NETでもdefault(T)したい
default(T)
C#のコードをVBに移植している時に以下のコードがありました。あ、なんで移植してるんだってツッコミは無しね。
class Hoge<T> { public T HogeHoge(T value = default(T)) { return value; } }
はて、VBではdefault(T)
に対応する演算子って何でしたっけ?
と言うことでググっても出てきません。
当たり前です。VBでは演算子ではないからです。
と言うわけで、各値型及び参照型の既定値を表すのはNothing
です。
null と Nothing
Nothing
を用いた既定値での初期化は幾つか試した感じdefault(T)
と同じようです。
しかし、残念ながらmsdnではNothing
ではどのように初期化されるかについて明確に書いてあるところを見つけられませんでした。
でもまぁ、多分default(T)
と同じでしょ。多分。きっと。おそらく。根拠は見つけられなかったけど。
ということでdefault
の説明をどうぞ。
ジェネリック コードの default キーワード (C# プログラミング ガイド)
と言うわけで、先ほどのコードと等価なコードがこちら。
Class Hoge(Of T) Public Function HogeHoge(Optional value As T = Nothing) As T Return value End Function End Class
おわりに
プロのVBユーザからすれば今更何を言っているんだといった感じですが、弊社としては初めて知ったのでメモがてら書きました。
C#のように専用のキーワードを導入せずにNothing
で初期化できるようになった要因は、まぁ、レガシーVBとの互換性でしょうか。
客観的にどちらかがいいのかは弊社には分かりませんが、個人的には『何も参照していない』を表す値と『既定値』を表す値を表現するキーワードが同じってのはかなり違和感を感じます。
おわり