我需要将枚举条目的一些属性存储在它们的常量中。例如,指示颜色是冷色还是暖色。
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/