我知道在.NET 4中,您可以使用HasFlag如何迭代.NET中的「set」枚舉C#3.5
.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
}
編輯:唯一值得看接受的答案,評論其餘/答案可以安全地忽略。
爲什麼不直接使用一個開關/ case語句? – Chris
所以你承認它不能在循環中完成? –
你沒有使用循環youre使用if ... – RhysW