【发布时间】:2013-01-21 15:41:36
【问题描述】:
我知道在 .NET 4 中你可以使用 HasFlag
.NET 3.5 中是否有以下替代方案?
if ((enumVar & EnumType.ValueOne) == EnumType.ValueOne)
{
// someMethod(1) or someMethod(EnumType.ValueOne)
}
if ((enumVar & EnumType.ValueTwo) == EnumType.ValueTwo)
{
// someMethod(2) or someMethod(EnumType.ValueTwo)
}
if ((enumVar & EnumType.ValueThree) == EnumType.ValueThree)
{
// someMethod(3) or someMethod(EnumType.ValueThree)
}
if ((enumVar & EnumType.ValueFour) == EnumType.ValueFour)
{
// someMethod(4) or someMethod(EnumType.ValueFour)
}
...等枚举中的每个值?您必须能够使用 for..each 循环来完成此操作,其中 someMethod 的参数是循环的索引?
[Flags]
enum EnumType
{
ValueOne = 1
, ValueTwo = 2
, ValueThree = 4
, ValueFour = 8
}
编辑:只看接受的答案,其余的 cmets/answers 可以安全地忽略。
【问题讨论】:
-
为什么不直接使用 switch/case 语句?
-
所以你承认它不能循环完成吗?
-
你没有使用循环你正在使用 if ......
-
@RhysW 这就是重点。我给出了 if 并询问是否可以将它们重写为循环
-
抱歉,我以为你的回复是针对 Chris,没有看到循环要求
标签: c# .net .net-3.5 enums bit-manipulation