枚举值的算术运算

glu*_*k47 5 .net c# 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?
}
Run Code Online (Sandbox Code Playgroud)

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

维基百科告诉我们,我的样本也允许_d - 1或者WeekDays.Tue - WeekDays.Mon,对于严格排序的顺序枚举可能有用,但我找不到任何标准参考,请问,请指点我?

Kir*_*huk 5

以下运算符可以在枚举类型的值可以使用:==,!=,<,>,<=,>=,+,-,^,&,|,~,++,--,sizeof.

  • C#语言规范识别操作部分下的枚举操作.例如,关系运算有一个关于http://msdn.microsoft.com/en-us/library/aa664726(v=vs.71).aspx页面上有效的运算符段落; 即,在应用运算符之前,将枚举值强制转换为其基础类型.同样用于加法和减法. (2认同)

Tig*_*ran 0

如果要使用算术运算,请不要使用enums,而使用numbersEnums是数值的命名约定,使它们更易于阅读并允许将它们组合起来。这实际上就是您在互联网上找不到任何相关内容的原因,因为它不应该用 来完成enums