我看到一些.NET 2.0代码看起来像这样:
public enum abc : int { value1 = 1, value2 = 2, value3 = 4 }
等等...
现在我知道标志枚举可以用于位值(如上所述,对吗?)所以你可以做| "或"等等,但不使用它的原因是什么?重写int有什么意义?
如果我设计一个用于选择多个值的枚举,我会使用flags属性而不是覆盖任何东西(我不明白).上述方法是什么网?
谢谢
它不是"重写" int
,它表示枚举的基础类型.默认是int
这样实际上没有实现任何东西,但在某些情况下,您可能希望以枚举为基础long
来存储更多标志,或者byte
如果枚举周围有很多实例而节省空间,它只有少数值,但框架设计指南中的建议是使用,int
除非你有充分的理由不这样做.
如果这是一个标志枚举,那么它应该标记[Flags]
,这似乎是这里的意图,所以遗漏看起来像一个错误.你仍然可以使用按位运算符组合值,即使它没有标记[Flags]
,但是从内存中我认为你得到编译器警告(或者它可能是一个FxCop警告,或者可能是一个ReSharper警告......).