可以说我有
if (textbox.Text != null && textbox.Text.Length > someNum)
{
//some code
}
如果 textbox.Text 为空,它会因为 null.Length 不起作用而崩溃,还是会在第一个表达式之后中断,因为运算符是 && 并且没有继续的意义?
可以说我有
if (textbox.Text != null && textbox.Text.Length > someNum)
{
//some code
}
如果 textbox.Text 为空,它会因为 null.Length 不起作用而崩溃,还是会在第一个表达式之后中断,因为运算符是 && 并且没有继续的意义?
这称为“短路评估”,C# 有它。所以是的,如果textbox.Text
为空,它不会计算表达式的第二部分。
有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/2a723cdk(v=VS.71).aspx。
是的,C# 会进行逻辑短路。MSDN
在发现第一个表达式为假后,它将中断。这称为短路,在许多现代语言(例如 C# 和 Java)中都很常见。
这就是为什么在检查另一个取决于对象首先不是 null 的条件之前检查 null 通常是一个好主意的原因。
是的。但是,我仍然会将该行拆分为检查 Null :返回或抛出异常。它使代码更清晰。