Niedawno zauważyłem ciekawość (przynajmniej dla mnie). Myślałem, że null-coalescing operator
ma pierwszeństwo przed jakąkolwiek operacją matematyczną, ale oczywiście byłem w błędzie. Myślałem, że po dwóch zmiennych byłoby mieć taką samą wartość na koniec:Dlaczego muszę umieścić operator koalescencyjny w nawiasach?
double? previousValue = null;
double? v1 = 1 + previousValue ?? 0;
double? v2 = 1 + (previousValue ?? 0);
Ale v2.Value
jest (żądany) 1 natomiast v1.Value
wciąż 0. Dlaczego?
może pomóc: http://en.csharp-online.net/ECMA-334%3a_14.2.1_Operator_precedence_and_associativity również http : //stackoverflow.com/questions/511093/what-is--operator-precedence-c-sharp-null-coalescing-operator – Ric