gpt4 book ai didi

c# - 如何不包含标志

转载 作者:行者123 更新时间:2023-12-02 03:28:48 26 4
gpt4 key购买 nike

我有枚举标志。如何获取不包含特定标志的所有标志组合?

[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}

最佳答案

第 1 步,使用二进制 NOT:

var notUsedBits = ~ value;

但这将设置所有未使用的 32 位。

所以你可能需要一个面具:

[Flags]
public enum TestEnum
{
A = 1,
B = 2,
C = 4,
D = 8,
All = A|B|C|D, // or compute this inside the method
}

然后方法就变成了

// untested
public static TestEnum AllNotContaining(this TestEnum value)
{
return ~ value & TestEnum.All;
}

这不会返回 IEnumerable,但这对于 Flags 枚举来说很奇怪(而且效率低下)。

关于c# - 如何不包含标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52420131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com