我已经看过几次类似的东西......我讨厌它。这基本上是“欺骗”语言吗?或者..你会认为这是“好的”,因为 IsNullOrEmpty 总是首先被评估?
(我们可以争论一个字符串在从函数中出来时是否应该为 NULL,但这并不是真正的问题。)
string someString;
someString = MagicFunction();
if (!string.IsNullOrEmpty(someString) && someString.Length > 3)
{
// normal string, do whatever
}
else
{
// On a NULL string, it drops to here, because first evaluation of IsNullOrEmpty fails
// However, the Length function, if used by itself, would throw an exception.
}
编辑: 再次感谢大家提醒我这种语言基础。虽然我知道它“为什么”起作用,但我不敢相信我不知道/不记得这个概念的名称。
(以防有人想要任何背景。我在对由 NULL 字符串和 .Length > x 异常生成的异常进行故障排除时遇到了这个问题......在代码的不同位置。所以当我看到上面的代码时,除了其他所有内容之外,我的挫败感从那里接管了。)