如何从位操作中删除选项

问题描述 投票:0回答:1

我正在一个 WPF 应用程序中工作,其中检查了一些项目,如果检查为真,我试图清除已检查的项目并在 for 循环中重置它。使用“fruit.FruitType = NewFruitType.None;”运行循环后,选择仍然为“无”。如果我删除“fruit.FruitType = NewFruitType.None;”它保留所有项目,并且不会删除未选中的项目。

项目1 |项目2 |第3项|项目4

如果第 3 项和第 4 项被删除,我怎样才能选择第 1 项 |项目2?

 fruit.FruitType = NewFruitType.None;

 foreach (var fruitType in fruit.FruitTypes.Where(x => x.IsChecked))
 {
     contact.FruitType |= (NewFruitType)fruitType.Id;
 }
c# bitwise-operators
1个回答
0
投票

您需要使用

AND
NOT
(技术上和补充)逻辑。在 C# 语法中,
&=
~
用于按位运算。

试试这个:

var stuff = Items.Item1 | Items.Item2 | Items.Item3 | Items.Item4;
Console.WriteLine(stuff);

stuff &= ~Items.Item2; 
Console.WriteLine(stuff);

结果:

Item1, Item2, Item3, Item4
Item1, Item3, Item4

如果您想一次删除多个,则需要继续查找:

var stuff = Items.Item1 | Items.Item2 | Items.Item3 | Items.Item4;
Console.WriteLine(stuff);

stuff &= ~Items.Item2 & ~Items.Item3; 
Console.WriteLine(stuff);

结果:

Item1, Item2, Item3, Item4
Item1, Item4

查看 Microsoft 参考中的详细信息:按位和移位运算符(C# 参考)

© www.soinside.com 2019 - 2024. All rights reserved.