gpt4 book ai didi

c# - 未能在枚举上使用 FlagsAttribute(无法解析符号 'HasFlag')

转载 作者:行者123 更新时间:2023-11-30 22:02:42 26 4
gpt4 key购买 nike

我在 C# 中有一个 asmx Web 服务,最近发现了非常有用的枚举 FlagsAttribute。我的声明如下:

[Flags] 
public enum eAdPriority
{
None = 0,
Gold = 1,
Silver = 2,
Homepage = 4
}

然后我按如下方式测试枚举:

eAdPriority test = eAdPriority.Gold | eAdPriority.Homepage | eAdPriority.Silver;
test.HasFlag(eAdPriority.Gold);

但是,最后一行的 HasFlag 部分突出显示为红色 Cannot resolve symbol 'HasFlag' 并且我的代码无法编译。有什么想法吗?

最佳答案

Enum.HasFlag 仅在 .NET Framework 4.0 或更高版本中可用。如果您使用的是 .NET Framework 3.5,则可以包括来自 this article 的扩展方法模仿 HasFlag 功能。为了完整起见,这里是代码(归功于文章的作者):

    public static bool HasFlag(this Enum variable, Enum value)
{
// check if from the same type.
if (variable.GetType() != value.GetType())
{
throw new ArgumentException("The checked flag is not from the same type as the checked variable.");
}

Convert.ToUInt64(value);
ulong num = Convert.ToUInt64(value);
ulong num2 = Convert.ToUInt64(variable);

return (num2 & num) == num;
}

关于c# - 未能在枚举上使用 FlagsAttribute(无法解析符号 'HasFlag'),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26627801/

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