在 C# 中合并嵌套的 If(C# 中的短路关键字)
是否可以将以下语句合并
if (a != null)
{
if (a.Count > 5)
{
// Do some stuff
}
}
为仅 1 个 If 语句,并使其在第一个条件不满足时不检查第二个条件。 (就像 VB.NET 中的 AndAlso
关键字)。像这样的东西:
if (a != null /* if it is null, don't check the next statement */ &&& a.Count > 5)
{
// Do some stuff
}
Is it possible to merge the following statement:
if (a != null)
{
if (a.Count > 5)
{
// Do some stuff
}
}
to just 1 If statement and make it not to check the second condition when the first one is not satisfied. (like AndAlso
keyword in VB.NET). something like:
if (a != null /* if it is null, don't check the next statement */ &&& a.Count > 5)
{
// Do some stuff
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
简单地说:
在 C# 中,
&&
运算符短路,这意味着它仅在左侧表达式为 true 时才计算右侧表达式(如 VB.NET 的AndElse
)。您在 VB.NET 中使用的
And
关键字不会短路,相当于 C# 的&
(按位与)操作员。(同样,
||
在 C# 中也是短路的,而 VB.NET 的Or
就像 C# 的|
一样。)Simply:
In C#, the
&&
operator short-circuits, meaning it only evaluates the right-hand expression if the left-hand expression is true (like VB.NET'sAndElse
).The
And
keyword you are used to in VB.NET does not short-circuit, and is equivalent to C#'s&
(bitwise-and) operator.(Similarly,
||
also short-circuits in C#, and VB.NET'sOr
is like C#'s|
.)在 C# 中,
&&
确实是一个“短路”运算符 - 如果其左侧的表达式为 false,则不会评估其右侧的表达式。In C#,
&&
is indeed a "short circuit" operator — if the expression to its left is false, the expression to its right will not be evaluated.您需要
&&
运算符来短路 if 语句:因此,如果 a 为
null
则无需计算 if 语句的第二个条件返回false
值,因此不执行块中的代码。You need the
&&
operator to short-circuit the if statement:So, if a is
null
then there is no need to evaluate the second condition for the if statement to return a value offalse
and therefore not execute the code in the block.