0
有人可以解释为什么以下抛出ArgumentNullException::?条件运算符意外的评估行为
static void Main(string[] args) {
IEnumerable<int> lst= null;
var msg = ",lst=" + lst!= null ? String.Join(",", lst) : "null";
Console.WriteLine(msg);
}
,这并不:
static void Main(string[] args) {
IEnumerable<int> lst= null;
var msg = ",lst=" + (lst!= null ? String.Join(",", lst) : "null");
Console.WriteLine(msg);
}
你这是什么期望'“,lst =”+ lst'在'lst'为空时做? –
因为'+'是[高优先级运算符](https://msdn.microsoft.com/en-us/library/aa691323(v = vs.71).aspx)而不是'!='。 – Groo
基本上这是操作问题的顺序。没有parens它会在'null'比较之前执行'',lst“+ lst'。 – juharr