给定枚举
:
[Flags]
public enum mytest
{
a = 1,
b = 2,
c = 4
}
我想出了两种方法来表示单个变量中的所有值:
var OR1 = (mytest)Enum.GetNames(typeof(mytest)).Sum(a => (int)Enum.Parse(typeof(mytest), a));
var OR2 = (mytest)(typeof(mytest).GetEnumValues() as mytest[]).Sum(a => (int)a);
现在,虽然它们都有效,但有更简洁的方法吗?可能是我缺少的 .NET 方法?
编辑:为了澄清,我需要函数是动态的 - 我不想通过指定每个 enum
值来计算它。
最佳答案
如果有一个 All
成员有意义,直接提供它:
[Flags]
public enum mytest
{
a = 1,
b = 2,
c = 4,
All = 7
}
不过,更惯用的写法可能是:
[Flags]
public enum MyTest
{
A = 1,
B = 1 << 0x01,
C = 1 << 0x02,
All = A | B | C
}
这显示了枚举值的逻辑进展,并且在 All
的情况下,可以轻松添加另一个成员。
关于c# - 'OR' 标记枚举中所有值的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15298239/