次のようなコンストラクターのオーバーロードがいくつかあるクラス「Foo」があるとします。
Class Foo
Public Sub New(id as Integer)
' Do stuff here
End Sub
Public Sub New(fee as Fee)
' assume that Fee is some other type
End Sub
End Class
ここで、id や Fee の値を気にせず、単純に 2 番目のコンストラクターを呼び出して null 参照を渡したい場合があるとします。C# では、次の方法で問題なくこれを実行できます。
var foo = new Foo(null);
そしてそれは意図したとおりに機能します。これに相当する VB は次のようになります。
Dim foo as New Foo(Nothing)
技術的にNothing
は と同等であることはわかってdefault<T>
いますが、直接同等のものはありません。私がハングアップしている場所はここにあります: VB コンパイラはNothing
、この場合、Integer または Foo のどちらであるかを推測できないように見えるため、あいまいさに関するエラーをスローしています。私が望む結果を達成する方法はありますか、またはこれは言語の制限であり、3番目のコンストラクターを作成するか、ダミーFoo
変数を宣言し、それを設定しNothing
てコンストラクターに渡すだけですか?