让我说我有
if (textbox.Text != null && textbox.Text.Length > someNum)
{
//some code
}
如果textbox.Text为null,它会崩溃,因为null.Length不起作用,或者它会在第一个表达式后断开,因为运算符是&&并且没有必要继续吗?
答案 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:返回或抛出异常。它使代码更清晰。