Ich habe kürzlich eine Neugier bemerkt (zumindest für mich). Ich dachte, dass die null-coalescing operator
würde Vorrang vor jeder mathematischen Operation, aber offensichtlich war ich falsch. Ich dachte, zwei Variablen folgende würde den gleichen Wert am Ende haben:Warum muss ich den Nullkoaleszenzoperator in Klammern setzen?
double? previousValue = null;
double? v1 = 1 + previousValue ?? 0;
double? v2 = 1 + (previousValue ?? 0);
Aber v2.Value
ist (die gewünschte) 1 während v1.Value
ist noch 0. Warum?
könnte helfen: http://en.csharp-online.net/ECMA-334%3a_14.2.1_Operator_precedence_and_associativity auch http : //stackoverflow.com/questions/511093/what-is-the-operator-precedence-of-c-sharp-null-coalescing-operator – Ric