2

次のようなコンストラクターのオーバーロードがいくつかあるクラス「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てコンストラクターに渡すだけですか?

4

3 に答える 3