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