Kann jemand erklären, warum wirft die folgend ein Argument::? Bedingte Operator Unexpected Auswertung Verhalten
static void Main(string[] args) {
IEnumerable<int> lst= null;
var msg = ",lst=" + lst!= null ? String.Join(",", lst) : "null";
Console.WriteLine(msg);
}
und dies nicht:
static void Main(string[] args) {
IEnumerable<int> lst= null;
var msg = ",lst=" + (lst!= null ? String.Join(",", lst) : "null");
Console.WriteLine(msg);
}
Was Sie wirft tun expect '", lst = "+ lst' zu tun, wenn' lst' null ist? –
Weil '+' ein [Operator mit höherer Priorität] ist (https://msdn.microsoft.com/en-us/library/aa691323 (v = vs.71) .aspx) als '! ='. – Groo
Grundsätzlich ist dies eine Reihenfolge der Operationen Problem. Ohne die Parens wird es "", lst "+ lst" vor dem "Null" Vergleich. – juharr