当InnerException为null时,将引发null引用异常。
String s = " inner exception: " + e.InnerException == null ? "None" : e.InnerException.Message;
但这不会:
String s = " inner exception: " + (e.InnerException == null ? "None" : e.InnerException.Message);
上面两个都很好。我无法弄清楚前者要做什么,这将导致它评估
e.InnerException.Message
。它们为什么不相等? 最佳答案
这是因为您的第一条语句正在将" inner exception: " + e.InnerException == null
评估为true
或false
。这全都与运算符优先级有关,这就是为什么第二个由于括号((
和)
)而可以正常工作的原因。
See this reference for Operator Precedence。在等于+
运算符之前先评估==
运算符。
关于c# - 为什么这会引发空引用异常?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8316581/