7
为什么我无法为托管类型或泛型函数的成员函数声明默认参数? C# 4.0
介绍Named and Optional Arguments;有类似的事情CLI
?C++/CLI可选参数
我不明白为什么不能声明的方法是这样的:
void Optional(int argument = 0);
,然后当我打电话Optional();
编译器不翻译此调用到:Optional(0);
。
为什么我无法为托管类型或泛型函数的成员函数声明默认参数? C# 4.0
介绍Named and Optional Arguments;有类似的事情CLI
?C++/CLI可选参数
我不明白为什么不能声明的方法是这样的:
void Optional(int argument = 0);
,然后当我打电话Optional();
编译器不翻译此调用到:Optional(0);
。
它看起来像C++/CLI编译器不会为此发出正确的IL指令。它不会发出指令.param [1] = int32(0)
,C#用它来识别默认参数。如果你在ILDasm中打开生成的程序集,你会看到它。
是编译是从System::Runtime::InteropServices
命名空间中的属性Optional
和DefaultParameterValue
,但C#不使用这些默认参数,所以目前有围绕创建超载没有简单的方法的一种方式。
你可以找到这个问题询问这里的那些属性:https://stackoverflow.com/a/4974528/93652
所以C++/CLI编译器不知道如何生成的指令。我希望用VS(12?)来解决问题。 – gliderkite 2012-04-25 14:26:05
我也希望如此。有趣的是,语言似乎以不同的方式处理。我听说VB.Net通过使用Attributes来完成它。所以我想这将是最好的,如果这两个属性和指令生成。 – Botz3000 2012-04-25 14:28:06