如果没有必要继续,表达式会破裂吗?

时间:2012-06-25 20:51:25

标签: c#

让我说我有

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

如果textbox.Text为null,它会崩溃,因为null.Length不起作用,或者它会在第一个表达式后断开,因为运算符是&&并且没有必要继续吗?

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

是的,C#做逻辑短路。 MSDN

答案 2 :(得分:0)

在发现第一个表达式为false后,它将中断。这称为短循环,它是许多现代语言(如C#和Java)的共同点。

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

答案 3 :(得分:0)

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