一尘不染

“&”与“ &&”的用法

c#

我遇到了这个:

bool Isvalid = isValid & CheckSomething()

bool Isvalid = isValid && CheckSomething()

第二种情况可能是发生短路的情况。

那么,我们不能总是只使用&代替&&吗?


阅读 1012

收藏
2020-05-19

共1个答案

一尘不染

&是按位“与”,表示它在位级别起作用。&&是逻辑“
AND”,表示它在布尔(真/假)级别上起作用。逻辑AND使用短路(如果第一部分为假,则没有必要检查第二部分),以防止在按位AND需要逐位AND运算时运行多余的代码,这样它将获得值。

您应该使用逻辑AND(&&),因为这就是您想要的(&可能无法正确执行操作),但是如果您要评估其副作用,可能需要单独运行该方法:

var check = CheckSomething();
bool IsValid = isValid && check;
2020-05-19