9

マネージド型のメンバー関数またはジェネリック関数の既定の引数を宣言できないのはなぜですか? 名前付き引数とオプション引数C# 4.0が導入されました。同様のことはありますか?CLI

次のようなメソッドを宣言できない理由がわかりません。

void Optional(int argument = 0);

そして、コンパイラを呼び出すと、この呼び出しは : に変換Optional();されません。Optional(0);

4

1 に答える 1

11

C++/CLI コンパイラが正しい IL ディレクティブを発行していないようです。.param [1] = int32(0)C# が既定のパラメーターを認識するために使用するディレクティブは発行しません。生成されたアセンブリを ILDasm で開くと、それが表示されます。

コンパイルする方法は、名前空間から属性を使用することですOptionalが、C# は既定のパラメーターにそれらを使用しないため、現在、オーバーロードを作成する簡単な方法はありません。DefaultParameterValueSystem::Runtime::InteropServices

これらの属性についての質問は、https ://stackoverflow.com/a/4974528/93652 で見つけることができます。

于 2012-04-25T13:13:20.553 に答える