一般来说,短路or
算子||
会忽略 的右侧,或者如果左侧的计算结果为真。显然,我们发现了一个例外。
查看以下内容:
if (foo == null || bar != true ? foo.Count == 0 : true)
{
}
此代码在命令上引发空引用异常,foo.Count
因为foo
为空。当然,布尔逻辑允许这样做。但是,如果foo
为 null,您会期望它or
会短路,甚至不会评估表达式的右侧,但它仍然会发生,并且会引发异常。
这是我的代码或 C# 编译器中的错误吗?是否有处理这种情况的 C# 规范的一部分?