gpt4 book ai didi

c# - 如何确定枚举值是否具有一个或多个与之比较的值?

转载 作者:可可西里 更新时间:2023-11-01 08:00:44 26 4
gpt4 key购买 nike

我有一个标有 [Flags] 属性的枚举,如下所示:

[Flags]
public enum Tag : int
{
None = 0,
PrimaryNav = 1,
HideChildPages = 2,
HomePage = 4,
FooterLink = 8
}

在我的站点地图的站点地图节点上,我将标签组合的 int 值存储为一个属性。

我需要做的是检查一个节点是否有一个或多个标签中的任何一个,例如标签.PrimaryNav |标记.HomePage.

我正在努力使用必要的 bool 逻辑来确定枚举值是否具有一个或多个与之进行比较的值。

如果不清楚,请见谅。如有必要,我可以提供更多信息。

最佳答案

您可以通过将值与 | 组合并通过 & 检查来做到这一点。

检查值是否包含其中一个标签:

if ((myValue & (Tag.PrimaryNav | Tag.HomePage)) != 0) { ... }

| 结合了您正在测试的枚举(按位)和 & 通过按位掩码进行的测试——如果结果不为零,则它至少有其中一套。

如果你想测试它是否设置了两者,你也可以这样做:

Tag desiredValue = Tag.PrimaryNav | Tag.HomePage;
if ((myValue & desiredValue) == desiredValue) { ... }

这里我们屏蔽掉了我们不关心的任何东西,并测试结果值是否等于我们关心的值(我们不能使用!= 0 就像以前一样,因为它会匹配 任一个 值,而这里我们对 both 感兴趣。

一些链接:

关于c# - 如何确定枚举值是否具有一个或多个与之比较的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2409025/

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