gpt4 book ai didi

c# - 短路语句评估——这有保证吗? [C#]

转载 作者:可可西里 更新时间:2023-11-01 03:03:30 25 4
gpt4 key购买 nike

这里是关于 C# 中的短路语句的快速问题。使用这样的 if 语句:

if (MyObject.MyArray.Count == 0 || MyObject.MyArray[0].SomeValue == 0)
{

//....
}

如果“MyArray.Count”部分为真,是否保证评估会在该部分之后停止?否则我会在第二部分得到一个空异常。

最佳答案

是的,这是有保证的。

C# Language Specification - 7.11 Conditional logical operators :

The && and || operators are called the conditional logical operators. They are also called the "short-circuiting" logical operators.

因此,它们将根据定义支持逻辑短路——您可以信赖这种行为。

现在区分条件运算符和逻辑运算符很重要:

  • 只有条件运算符支持短路,逻辑运算符不支持。
  • C# 的逻辑运算符看起来就像它们的条件运算符,但少了一个字符,因此逻辑 OR 是 |,逻辑 AND 是 &
  • 可以重载逻辑运算符,但不能重载条件运算符(这有点技术性,因为条件运算符评估确实涉及重载决策,并且此重载决策可以解析为该类型的逻辑运算符的自定义重载,因此您可以解决这个问题一定程度上的限制)。

关于c# - 短路语句评估——这有保证吗? [C#],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2692153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com