枚举值的算术运算

时间:2012-03-20 09:16:14

标签: c# .net enums

c#枚举支持哪些算术运算?令人惊讶的是,我无法通过谷歌,维基百科和stackoverflow找到它。

我可以添加两个枚举值而不需要任何强制转换吗?将任意常量添加到某个值或减去它? 或枚举是否保证该类型的值始终是定义的枚举值或其位掩码之一?

class ... {...
enum WeekDays : byte { Sun = 1, Mon = 2, Tue = 3, /* and so on*/ Sat = 7 };
public static bool IsWeekend (WeekDays _d) {
/// Can I be sure here that _d has value from 1..7? May it be any of 0..255?
}

我知道按位操作,支持它们表示标志似乎是合理的。

维基百科告诉我们,我的示例还允许_d - 1WeekDays.Tue - WeekDays.Mon,这对于严格排序的序列枚举非常有用,但我找不到任何标准参考,请问,请指点我? / p>

2 个答案:

答案 0 :(得分:5)

以下运算符可用于枚举类型的值:==!=<><=>=+-^&|~++--,{ {1}}。

答案 1 :(得分:0)

如果您想使用算术运算,请不要使用enums,请使用numbersEnums是数值的命名对象,使其更具人性化,并允许使用组合。这实际上是你在互联网上没有发现任何相关内容的原因,因为它不应该用enums完成。