我遇到了这个:
bool Isvalid = isValid & CheckSomething() bool Isvalid = isValid && CheckSomething()
第二种情况可能是发生短路的情况。
那么,我们不能总是只使用&代替&&吗?
&
&&
&是按位“与”,表示它在位级别起作用。&&是逻辑“ AND”,表示它在布尔(真/假)级别上起作用。逻辑AND使用短路(如果第一部分为假,则没有必要检查第二部分),以防止在按位AND需要逐位AND运算时运行多余的代码,这样它将获得值。
您应该使用逻辑AND(&&),因为这就是您想要的(&可能无法正确执行操作),但是如果您要评估其副作用,可能需要单独运行该方法:
var check = CheckSomething(); bool IsValid = isValid && check;