C++/CLI可选参数

gli*_*ite 8 c++-cli optional-parameters

为什么我不能为托管类型或泛型函数的成员函数声明默认参数?C# 4.0引入了命名和可选参数 ; 还有类似的东西CLI吗?

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

void Optional(int argument = 0);
Run Code Online (Sandbox Code Playgroud)

然后,当我打电话Optional();,编译器不翻译此电话为:Optional(0);.

Bot*_*000 10

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

那一种方法编译是使用属性OptionalDefaultParameterValueSystem::Runtime::InteropServices命名空间,但是C#不使用这些默认参数,所以目前有围绕创建超载没有简单的方法.

您可以在此处找到询问这些属性的问题:https://stackoverflow.com/a/4974528/93652