我正在一个 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;
}
您需要使用
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# 参考)