以下运算符使用bool 操作数执行逻辑运算:
一元!(逻辑非)运算符。二元&(逻辑与)、|(逻辑或)和^(逻辑异或)运算符。 这些运算符始终计算两个操作数。二元&&(条件逻辑与)和||(条件逻辑或)运算符。 这些运算符仅在必要时才计算右侧操作数。
对于整型数值类型的操作数,&、|和^运算符执行位逻辑运算。 有关详细信息,请参阅位运算符和移位运算符。
逻辑非运算符 !
一元前缀!运算符计算操作数的逻辑非。 也就是说,如果操作数的计算结果为false,它生成true;如果操作数的计算结果为true,它生成false:
bool passed = false; Console.WriteLine(!passed); // output: True Console.WriteLine(!true); // output: False
从C# 8.0 起,一元后缀!运算符为null 包容运算符。
逻辑 AND 运算符 &
&运算符计算操作数的逻辑与。 如果x和y的计算结果都为true,则x & y的结果为true。 否则,结果为false。
即使左侧操作数计算结果为false,&运算符也会计算这两个操作数,而在这种情况下,无论右侧操作数的值为何,运算结果都为false。
在下面的示例中,&运算符的右侧操作数是方法调用,无论左侧操作数的值如何,都会执行方法调用:
bool SecondOperand() { Console.WriteLine("Second operand is evaluated."); return true; } bool a = false & SecondOperand(); Console.WriteLine(a); // Output: // Second operand is evaluated. // False bool b = true & SecondOperand(); Console.WriteLine(b); // Output: // Second operand is evaluated. // True
条件逻辑 AND 运算符&&也计算操作数的逻辑 AND,但如果左侧操作数的计算结果为false,它就不会计算右侧操作数。
逻辑异或运算符 ^