在 C# 中合并嵌套的 If(C# 中的短路关键字)

发布于 2024-10-21 17:45:31 字数 357 浏览 6 评论 0原文

是否可以将以下语句合并

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

四叶草在未来唯美盛开 2024-10-28 17:45:31

简单地说:

if ((a != null) && (a.Count > 5)) {
    // ...
}

在 C# 中,&& 运算符短路,这意味着它仅在左侧表达式为 true 时才计算右侧表达式(如 VB.NET 的 AndElse)。

您在 VB.NET 中使用的 And 关键字不会短路,相当于 C# 的 &(按位与)操作员。

(同样,|| 在 C# 中也是短路的,而 VB.NET 的 Or 就像 C# 的 | 一样。)

Simply:

if ((a != null) && (a.Count > 5)) {
    // ...
}

In C#, the && operator short-circuits, meaning it only evaluates the right-hand expression if the left-hand expression is true (like VB.NET's AndElse).

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's Or is like C#'s |.)

离线来电— 2024-10-28 17:45:31
if ((a != null) && (a.Count > 5)) // Parentheses are nice, but not necessary
{
  // Excitement goes here
}

在 C# 中,&& 确实是一个“短路”运算符 - 如果其左侧的表达式为 false,则不会评估其右侧的表达式。

if ((a != null) && (a.Count > 5)) // Parentheses are nice, but not necessary
{
  // Excitement goes here
}

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.

糖粟与秋泊 2024-10-28 17:45:31

您需要 && 运算符来短路 if 语句:

if (a != null && a.Count > 5)
{
     // Execute code 
}

因此,如果 a 为 null 则无需计算 if 语句的第二个条件返回 false 值,因此不执行块中的代码。

You need the && operator to short-circuit the if statement:

if (a != null && a.Count > 5)
{
     // Execute code 
}

So, if a is null then there is no need to evaluate the second condition for the if statement to return a value of false and therefore not execute the code in the block.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文