我需要将枚举条目的一些属性存储在它们的常量中。例如,指示颜色是冷色还是暖色。

enum Colors
{
  Yellow, // warm
  Blue,   // cold
  Gray,   // cold
  Red,    // warm
  // etc.
}

在 C++ 中,我会定义一个宏来为常量生成位掩码。
就像是:
#define WARM 1
#define COLD 0

#define MAKECOLOR(index, type) ((index << 8) | type)

enum Colors
{
  Yellow = MAKECOLOR(0, WARM),
  Blue   = MAKECOLOR(1, COLD),
  Gray   = MAKECOLOR(2, COLD),
  Red    = MAKECOLOR(3, WARM),
  // etc.
}

在 C# 中这是不可能的,因为没有宏。我想避免直接在枚举中编写位掩码表达式。像这样:
  ...
  Gray   = ((2 << 8) | 0),
  ...

有任何想法吗?

附言
是的,我是一个语法糖狂。 :D

最佳答案

您应该在枚举值中使用属性。看了这篇文章,还不错:

http://www.codeproject.com/KB/cs/enumwithdescription.aspx

希望能帮助到你!

关于c# - 为枚举值生成的常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7107387/

10-13 06:08