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