我有一些类型,这些类型具有从复选框中选择的按位值[1,2,4,8,16,32],当保存到数据库时,我将选择的值组合起来,例如得到42的值。我要如何计算要从组合值中选择的值,在编辑屏幕上我要重新检查所选的值。
答案 0 :(得分:1)
检查是否您的组合值中包含8,您可以使用按位和运算符,如下所示:
int combinedValue = 42;
int bitwiseValue = 8;
bool isBitwiseValueChecked = (combinedValue & bitwiseValue) == bitwiseValue;
答案 1 :(得分:0)
使用enum
为标志建模:
public static void Main()
{
Console.WriteLine((MyFlags)1); // Foo
Console.WriteLine((MyFlags)7); // Foo, Bar, Baz
Console.WriteLine((int)(MyFlags.Foo | MyFlags.Bar)); // 3
}
[Flags]
enum MyFlags
{
Foo = 1,
Bar = 2,
Baz = 4
}
然后,要列出所有成员,请参见List all bit names from a flag Enum