Considere el siguiente escenario típico:
if(myObject == null) {
myObject = new myClass();
}
Me pregunto qué se piensa del siguiente reemplazo usando el operador de fusión nula:
myObject = myObject ?? new myClass();
No estoy seguro de si debería estar usando la segunda forma. Parece una buena taquigrafía, pero la myObject = myObject
construcción al principio parece que podría ser un poco de olor a código.
¿Es esto algo razonable de hacer, o hay una mejor taquigrafía que me estoy perdiendo? O tal vez, "¡Son tres líneas, supéralo!"
Editar: Como se ha mencionado, quizás llamar a esto un escenario típico es una exageración. Por lo general, encuentro que me encuentro con esta situación cuando estoy recuperando una entidad de una base de datos que tiene una propiedad de tipo de referencia secundaria que puede o no estar poblada todavía:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClass
debe proporcionar un public static readonly
miembro de un Empty
valor de su tipo. Ver String.Empty
en MSDN .
??=
operador?