【发布时间】:2012-03-20 09:16:13
【问题描述】:
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?
}
我知道按位运算,支持它们表示标志似乎是合理的。
Wikipedia 告诉我们,我的示例还允许 _d - 1 或 WeekDays.Tue - WeekDays.Mon,这对于严格排序的顺序枚举很有用,但我找不到任何标准参考,请您指点我吗?
【问题讨论】:
-
你能不能只是测试一下看看会发生什么?
-
我的意思是了解标准,而不是特定的编译器行为。首先,我想确定,我的代码对于任何支持标准 c#(MS、Mono、
)的编译器都是正确的。其次,我想从相应的标准文章中阅读一些有用的东西,以便更好地为我的 c# 测试做好准备。