【发布时间】:2013-08-22 13:27:19
【问题描述】:
我遇到了与this SO question 中描述的问题类似的问题
然而,在我的情况下,可选参数默认值为:
1. 在单独的 C++/CLI dll 中定义。
2. 已在该库中定义为“public static const”
当我尝试将该值用作 C# 中的默认参数值时,我得到“必须是编译时间常数”。
有没有办法在 (C++/cli) 库和 (C#) 应用程序之间共享一个共同的 const 值?
C++/CLI 库:
namespace MyCPlusPlusCLILib {
public ref class CPPCLIClass {
public:
static const double Invalid = -1;
}
C#代码:
public MyMethod(double fish = MyCPlusPlusCLILib.CPPCLIClass.Invalid) { }
// C# compiler error "Must be a compile time const"
或
const double MyConstDouble = MyCPlusPlusCLILib.CPPCLIClass.Invalid;
// C# compiler error "Must be a compile time const"
【问题讨论】:
-
参数是什么类型的?
-
请贴一些代码。
-
我想应该是
const而不是static const -
@close voter:请澄清您的接近投票。
-
@SriramSakthivel:在 C# 中 const => static - 这是 C++ 的情况吗?我不这么认为。即在 C# 中 const 可以作为静态访问,但在 C++ 中并非如此,所以我认为它确实需要在那里是静态的。
标签: c# c++-cli constants default-value