如果我正在评估两个变量,而不是两个方法调用,那么天气问题我使用"&&"或"&"
//some logic that sets bool values boolean X = true; boolean Y = true; if (X & Y){ // perform some operation } if (X && Y){ // perform some operation }
另外我用于C#3.0/.NET 3.5的书只引用了&&运算符,&运算符会消失吗?
如果您正在执行真/假逻辑测试,请始终使用&&.一个单一的&执行一点'和'.在某些情况下,它会像逻辑测试一样工作,但不能保证适用于所有逻辑案例.单个&的最常见用法是在应用位掩码时.
例子 (&&):
true && true == true
示例(&):
00101001 & 00100001 = 00100001
如果使用单个&(和),则评估表达式的第二部分.如果第二部分依赖于第一部分是真的,这可能是不好的.通常总是使用&&,因为如果第一部分是假的,则不评估第二部分.
逻辑上单个&执行按位操作,正如其他人所说,这对于布尔比较/评估仍然有效.实际上唯一一次使用单个&(或|)(或布尔评估)是第二次评估应该始终运行(如果它是一个函数调用/修饰符).这是不好的做法,也可能是为什么这本书没有提到它.
单个&对标志枚举和位掩码很有用.
以下将抛出obj为null的异常:
bool b = obj != null & obj.IsActive
但这会奏效:
bool b = obj != null && obj.IsActive
这是不好的:
bool b = obj.IsActive && obj.SetActive(false); bool b = obj.IsActive & obj.SetActive(false);
&运营商将留在这里.