繁体   English   中英

枚举值的算术运算

[英]arithmetic operations on enum values

c#枚举支持哪些算术运算? 令人惊讶的是,我既无法通过Google也无法通过Wikipedia和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 - 1WeekDays.Tue - WeekDays.Mon ,这对于严格排序的顺序枚举很有用,但是我找不到任何标准参考,请给我指出吗?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM