foreach (Suit suit in Enum.GetValues(typeof(Suit)))
{
// ...
}
但是如何迭代按位枚举实例?
Suit mySuits = Suit.Hearts | Suit.Diamonds;
// How to now iterate mySuits, which should loop twice instead of four times?
最佳答案
假设 Suit
是一个没有重叠值的按位枚举,那么这就足够了:
var availableSuits = Enum.GetValues(typeof(Suit)).Cast<Enum>();
foreach (Suit suit in availableSuits.Where(mySuits.HasFlag)) {
// ...
}
如果它需要快速,或者如果它需要忽略复合值或零值,那么您可能应该改为在
for
循环中检查 2 的连续幂并确定哪些值以这种方式匹配。关于c# - 逐位枚举/标志实例枚举/迭代/foreach,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8055206/