作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个带有 Flags 属性的枚举。
我的问题是,我想获得所有选项的整数位掩码,而无需自己手动组合所有位。我想这样做是为了与其他一些 int 字段进行比较,并且我想保护以防将来的开发人员向枚举添加更多位选项。
另一件事是我的枚举标志中的位将全部手动分配,因此我不能简单地获取下一个值并减去 1。
最佳答案
如果我正确理解了您的要求,那么这应该对您有用:
Enum.GetValues(typeof(Enum)).Cast<int>().Sum();
然后您可以将其转换回您的typeof(Enum)
:
[Flags]
public enum Values
{
Value_1 = 1,
Value_2 = 2,
Value_3 = 4,
Value_4 = 8,
Value_5 = 16,
Value_6 = 32,
Value_7 = 64,
Value_8 = 128,
Value_9 = 256
}
static void Main(string[] args)
{
Values values = (Values)Enum.GetValues(typeof(Values)).Cast<int>().Sum();
}
关于c# - 获取枚举标志所有位的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3463045/
我是一名优秀的程序员,十分优秀!