首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“&”与“&&”的用法

问“&”与“&&”的用法
EN

Stack Overflow用户
提问于 2011-04-04 19:09:01
回答 4查看 85K关注 0票数 78

我偶然发现了这个:

代码语言:javascript
复制
bool Isvalid = isValid & CheckSomething()

bool Isvalid = isValid && CheckSomething()

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

所以我们不能总是使用&而不是&&吗

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-04-04 19:12:12

&是按位AND运算,这意味着它在位级别上工作。&&是一个逻辑AND,这意味着它在布尔值(真/假)级别工作。逻辑AND使用短路(如果第一部分为假,则检查第二部分没有用)来防止运行过多的代码,而逐位AND需要对每一位进行操作以确定结果。

您应该使用逻辑AND (&&),因为这是您想要的,而&可能会做错误的事情。但是,如果您想要评估其副作用,则需要单独运行第二种方法:

代码语言:javascript
复制
var check = CheckSomething();
bool IsValid = isValid && check;
票数 91
EN

Stack Overflow用户

发布于 2018-05-01 06:03:51

对于bool,C#有两种类型的逻辑连接(AND)运算符

  1. x & y Logical AND

代码语言:javascript
复制
- Results in `true` only if `x` and `y` evaluate to `true`
- Evaluates **both** `x` and `y`.

  1. x && y Conditional Logical AND

代码语言:javascript
复制
- Results in `true` only if `x` and `y` evaluate to `true`
- Evaluates `x` first, and if `x` evaluates to `false`, it returns `false` immediately without evaluating `y` (_short-circuiting_)

因此,如果您同时依赖于要计算的x和y,则可以使用&运算符,尽管它很少使用,而且很难读懂,因为它的副作用对读者来说并不总是很清楚。

注意:对于integer types (int、long等),也存在二元&运算符。其中它执行逐位逻辑AND。

票数 33
EN

Stack Overflow用户

发布于 2011-04-04 19:11:42

在&&中,仅当第一个表达式为真时才计算第二个表达式。

And &只是连接两个表达式的一种方式,比如true & true = true,true & false = false等等。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5537607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档