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 - 1
或WeekDays.Tue - WeekDays.Mon
,这对于严格排序的序列枚举非常有用,但我找不到任何标准参考,请问,请指点我? / p>
答案 0 :(得分:5)
以下运算符可用于枚举类型的值:==
,!=
,<
,>
,<=
,>=
,+
,-
,^
,&
,|
,~
,++
,--
,{ {1}}。
答案 1 :(得分:0)
如果您想使用算术运算,请不要使用enums
,请使用numbers
。
Enums
是数值的命名对象,使其更具人性化,并允许使用组合。这实际上是你在互联网上没有发现任何相关内容的原因,因为它不应该用enums
完成。