【发布时间】:2018-09-20 07:48:11
【问题描述】:
我有枚举标志。如何获取不包含特定标志的所有标志组合?
[Flags]
public enum TestEnum
{
A = 1,
B = 2,
C = 4,
D = 8
}
public static IEnumerable<Enum> AllNotContaining(this Enum value)
{....}
例如,TestEnum.A.AllNotContaining() 应该返回 {2, 4, 6, 8, 10, 12, 14}。
【问题讨论】:
-
所以如果
value = TestEnum.A | TestEnum.C你希望你的函数返回{ TestEnum.B, TestEnum.D }? -
示例 TestEnum.A.AllNotContaining() 返回 {2, 4 ,8, 6, 10, 12, 14}
-
将您的示例添加到问题中。此处不计评论。
-
@panmigal 请注意,标记的枚举应仅具有 2^x = {1,2,4,8,16,32,...} 的值。否则会导致错误。
-
@Chrᴉz:我想您会发现,当枚举值不是 2 的幂时,Flags 属性不会导致任何错误。见:stackoverflow.com/questions/8447/…
标签: c# enums flags enum-flags