如何在程序集中定义编译时常量?

时间:2015-10-14 13:23:05

标签: c# c++-cli compile-time-constant

首先:我使用的是C ++ - CLI,但我也想知道C#的解决方案。

使用以下代码

汇编"基础知识"

public ref class CONSTS abstract sealed
{
public:
  static const int  SUCCESS     = 1;
  static const int  InProgress  = 101;
};

汇编"节目"

enum class EnumReplyLLI
{
  Nothing = 0,
  SUCCESS = CONSTS::SUCCESS,      // C2057
  Busy    = CONSTS::InProgress,   // C2057
  ...
};

我收到错误 C2057:预期的常量表达式

如何定义编译时常量并在另一个程序集中使用它? 我的代码几乎与this SO post中接受的答案相同,但这不起作用。

2 个答案:

答案 0 :(得分:2)

C#const C++/CLI的实际等价物为literal,因此您的CONSTS类应如下所示:

public ref class CONSTS abstract sealed
{
public:
    literal int  SUCCESS = 1;
    literal int  InProgress = 101;
};

答案 1 :(得分:1)

不确定为什么它不能用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,  
};