Stellen Sie sich das folgende typische Szenario vor:
if(myObject == null) {
myObject = new myClass();
}
Ich frage mich, was man von dem folgenden Ersatz mit dem Null-Koaleszenz-Operator hält:
myObject = myObject ?? new myClass();
Ich bin nicht sicher, ob ich das zweite Formular verwenden soll. Es scheint eine nette Abkürzung zu sein, aber das myObject = myObject
Konstrukt am Anfang scheint ein bisschen nach Code zu riechen.
Ist das eine vernünftige Sache, oder gibt es eine bessere Abkürzung, die ich vermisse? Oder vielleicht "Es sind drei Zeilen, komm drüber hinweg!"?
Edit: Wie bereits erwähnt, ist die Bezeichnung eines typischen Szenarios möglicherweise etwas übertrieben. Normalerweise stoße ich auf diese Situation, wenn ich eine Entität aus einer Datenbank mit einer untergeordneten Referenztypeigenschaft abrufe, die möglicherweise noch nicht ausgefüllt ist:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClass
sollte es ein public static readonly
Mitglied eines Empty
Werts seines Typs liefern . Siehe String.Empty
unter MSDN .
??=
Operator?