假设你有两个整数,a = 8,b = 2。在C++中,a | b为真。我利用这种行为处理标志集合。例如,标志将是1、2、4、8等,任何它们的集合都是唯一的。我找不到如何在C#中实现这一点,因为|和&运算符的行为与C++中不同。我阅读了关于C#运算符的文档,但仍然不理解。
编辑:
不幸的是,我似乎在某个地方搞砸了。以这段代码为例:
编辑:
不幸的是,我似乎在某个地方搞砸了。以这段代码为例:
byte flagCollection = 8;
byte flag = 3;
if ((flag | flagCollection) != 0) MessageBox.Show("y"); else MessageBox.Show("n");
这个函数会针对任何flag值返回"y"。显然,3 | 8 的结果是11。我想要做的是创建一个flag集合:1、2、4、8、16,当我输入一个数字时,能够确定它包含哪些flags。
int
并没有被直接转换为bool
,因为C++中没有bool
类型 -int
被用作bool
。 - Noldorin|
和&
对于bool
操作数具有特殊含义。在这种情况下,&
不是按位“与”,而是逻辑“与”而没有短路。 - jalf