2012-04-25 24 views
7

なぜマネージタイプまたは汎用関数のメンバー関数のデフォルト引数を宣言できないのですか?導入されたC# 4.0Named and Optional Arguments; CLIにも同様のことがありますか?C++/CLIのオプション引数

次のようにメソッドを宣言することはできませんなぜ私は理解していない:

void Optional(int argument = 0); 

そして、私は、コンパイラOptional();を呼び出すときにいないがににこのコールを翻訳ん:Optional(0);

答えて

8

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

がそう現在の過負荷を作成する周りの簡単な方法はありません、System::Runtime::InteropServices名前空間からの属性OptionalDefaultParameterValueを使用するのではなく、C#はデフォルトパラメータのものを使用していないだろうコンパイルする方法。

あなたはここにそれらの属性について尋ねる質問を見つけることができます:https://stackoverflow.com/a/4974528/93652

+0

だから、C++/CLIのコンパイラディレクティブを生成する方法を知りません。私はVS(12?)で問題が解決されることを願っています。 – gliderkite

+0

私もそう願っています。興味深いことに、言語がこれを別々に扱っているようです。私はVB.NetがAttributesを使ってそれを行うと聞いた。ですから、両方の属性とディレクティブが生成されているのがベストであると思います。 – Botz3000

関連する問題