2

可以说我有

if (textbox.Text != null && textbox.Text.Length > someNum)
{
    //some code
}

如果 textbox.Text 为空,它会因为 null.Length 不起作用而崩溃,还是会在第一个表达式之后中断,因为运算符是 && 并且没有继续的意义?

4

4 回答 4

8

这称为“短路评估”,C# 有它。所以是的,如果textbox.Text为空,它不会计算表达式的第二部分。

有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/2a723cdk(v=VS.71).aspx

于 2012-06-25T20:52:40.273 回答
2

是的,C# 会进行逻辑短路。MSDN

于 2012-06-25T20:52:41.923 回答
0

在发现第一个表达式为假后,它将中断。这称为短路,在许多现代语言(例如 C# 和 Java)中都很常见。

这就是为什么在检查另一个取决于对象首先不是 null 的条件之前检查 null 通常是一个好主意的原因。

于 2012-06-25T20:52:48.903 回答
0

是的。但是,我仍然会将该行拆分为检查 Null :返回或抛出异常。它使代码更清晰。

于 2012-06-25T20:53:43.520 回答