C++ cli C++/CLI可选参数

C++ cli C++/CLI可选参数,c++-cli,optional-parameters,C++ Cli,Optional Parameters,为什么我不能为托管类型的成员函数或泛型函数声明默认参数C#4.0引入;对于CLI,也有类似的情况 我不明白为什么不能声明这样的方法: void Optional(int argument = 0); 然后当我调用Optional()时编译器不会将此调用转换为:可选(0)看起来C++/CLI编译器没有为此发出正确的IL指令。它不发出指令.param[1]=int32(0),C#使用该指令识别默认参数。如果在ILDasm中打开生成的程序集,您将看到它 编译的一种方法是使用System::Runti

为什么我不能为托管类型的成员函数或泛型函数声明默认参数<代码>C#4.0引入;对于
CLI
,也有类似的情况

我不明白为什么不能声明这样的方法:

void Optional(int argument = 0);

然后当我调用
Optional()时编译器不会将此调用转换为:
可选(0)

看起来C++/CLI编译器没有为此发出正确的IL指令。它不发出指令
.param[1]=int32(0)
,C#使用该指令识别默认参数。如果在ILDasm中打开生成的程序集,您将看到它

编译的一种方法是使用
System::Runtime::InteropServices
命名空间中的属性
Optional
DefaultParameterValue
,但是C#不使用这些属性作为默认参数,因此目前没有简单的方法来创建重载


您可以在这里找到有关这些属性的问题:

因此C++/CLI编译器不知道如何生成指令。我希望VS(12?)能解决这个问题,我也希望如此。有趣的是,语言处理这个问题的方式似乎有所不同。我听说VB.Net是通过使用属性来实现的。所以我想最好是同时生成属性和指令。