Eri*_*rix 9 c# conditional-operator nullreferenceexception
当InnerException为null时,这将抛出一个空引用异常.
String s = " inner exception: " + e.InnerException == null ? "None" : e.InnerException.Message;
Run Code Online (Sandbox Code Playgroud)
但这不会:
String s = " inner exception: " + (e.InnerException == null ? "None" : e.InnerException.Message);
Run Code Online (Sandbox Code Playgroud)
以上两种都很好.我无法弄清楚前者试图做什么会导致它进行评估e.InnerException.Message.为什么它们不相同?
小智 22
这是因为您的第一个声明正在评估" inner exception: " + e.InnerException == null为true或false.这都是关于运算符优先级的,这就是为什么第二个工作正常由于括号((和)).
有关操作员优先顺序,请参阅此参考.在+平等的运营商之前评估==操作.