gpt4 book ai didi

c# - 如何解码位以获得原始值?

转载 作者:太空宇宙 更新时间:2023-11-03 18:40:55 25 4
gpt4 key购买 nike

假设我有以下枚举

[Flags]
enum Options
{
Option1 = 1 << 0,
Option2 = 1 << 1,
Option3 = 1 << 2
}

我要设置一个变量如下

var options = 0;
options |= Options.Option1;
options |= Options.Option3;

// now options should equal Option1 + Option3
// I then store that single value in the database
myDatabase.Options.Submit(options);

然后如何解析“选项”以取回原始值?

public List<Options> ParseOptions(Options options)
{
// Not sure how to parse the options.
}

最佳答案

您可以使用 Enum.HasFlag()查看是否设置了特定标志的方法。只需检查所有单独的值测试是否已设置。

var value = Options.Option1 | Options.Option3;
foreach (Options flag in Enum.GetValues(typeof(Options)))
{
if (value.HasFlag(flag))
{
// do something with the flag
}
}

请注意,HasFlag() 方法已添加到 .NET 4。然而,它在逻辑上等同于此:

public static bool HasFlag(this Enum value, Enum flag)
{
return (value & flag) == flag;
}

关于c# - 如何解码位以获得原始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9027823/

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