如何在程序集中定义编译时常量?
How to define a compile time constant in an assembly?
首先:我正在使用C++-CLI,但我也想知道C#的解决方案。
使用以下代码
程序集"basics"
public ref class CONSTS abstract sealed
{
public:
static const int SUCCESS = 1;
static const int InProgress = 101;
};
程序集"program"
enum class EnumReplyLLI
{
Nothing = 0,
SUCCESS = CONSTS::SUCCESS, // C2057
Busy = CONSTS::InProgress, // C2057
...
};
我收到错误 C2057: 预期的常量表达式
如何定义编译时常量并在另一个程序集中使用它?
我的代码与 this SO post 中接受的答案几乎相同,但这不起作用。
不确定为什么它在 C++ 中不起作用,但这是 C# 中的等效代码:
public static class CONSTS
{
public const int SUCCESS = 1;
public const int InProgress = 101;
};
enum EnumReplyLLI
{
Nothing = 0,
SUCCESS = CONSTS.SUCCESS,
Busy = CONSTS.InProgress,
};
C#
const
在 C++/CLI
中的实际等价物是 literal
,所以你的 CONSTS
class 应该是这样的:
public ref class CONSTS abstract sealed
{
public:
literal int SUCCESS = 1;
literal int InProgress = 101;
};
首先:我正在使用C++-CLI,但我也想知道C#的解决方案。
使用以下代码
程序集"basics"
public ref class CONSTS abstract sealed
{
public:
static const int SUCCESS = 1;
static const int InProgress = 101;
};
程序集"program"
enum class EnumReplyLLI
{
Nothing = 0,
SUCCESS = CONSTS::SUCCESS, // C2057
Busy = CONSTS::InProgress, // C2057
...
};
我收到错误 C2057: 预期的常量表达式
如何定义编译时常量并在另一个程序集中使用它?
我的代码与 this SO post 中接受的答案几乎相同,但这不起作用。
不确定为什么它在 C++ 中不起作用,但这是 C# 中的等效代码:
public static class CONSTS
{
public const int SUCCESS = 1;
public const int InProgress = 101;
};
enum EnumReplyLLI
{
Nothing = 0,
SUCCESS = CONSTS.SUCCESS,
Busy = CONSTS.InProgress,
};
C#
const
在 C++/CLI
中的实际等价物是 literal
,所以你的 CONSTS
class 应该是这样的:
public ref class CONSTS abstract sealed
{
public:
literal int SUCCESS = 1;
literal int InProgress = 101;
};