Considérez le scénario typique suivant:
if(myObject == null) {
myObject = new myClass();
}
Je me demande ce que l'on pense du remplacement suivant en utilisant l'opérateur de coalescence nulle:
myObject = myObject ?? new myClass();
Je ne sais pas si je devrais utiliser le deuxième formulaire. Cela semble être un joli raccourci, mais la myObject = myObject
construction au début semble pouvoir ressembler à une odeur de code.
Est-ce une chose raisonnable à faire ou y a-t-il un meilleur raccourci qui me manque? Ou peut-être, "c'est trois lignes, surmontez-le!"?
Edit: Comme cela a été mentionné, peut-être appeler cela un scénario typique est quelque chose d'une surestimation. Je trouve généralement que je rencontre cette situation lorsque je récupère une entité d'une base de données qui possède une propriété de type de référence enfant qui peut ou non encore être remplie:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClass
devrait fournir un public static readonly
membre d'une Empty
valeur de son type. Voir String.Empty
sur MSDN .
??=
opérateur?