Considera il seguente scenario tipico:
if(myObject == null) {
myObject = new myClass();
}
Mi chiedo cosa ne pensi della seguente sostituzione usando l'operatore a coalescenza nulla:
myObject = myObject ?? new myClass();
Non sono sicuro se dovrei utilizzare il secondo modulo. Sembra una bella scorciatoia, ma il myObject = myObject
costrutto all'inizio potrebbe sembrare un po 'di odore di codice.
È una cosa ragionevole da fare o c'è una scorciatoia migliore che mi manca? O forse "Sono tre righe, superalo!"?
Modifica: Come è stato menzionato, forse chiamare questo uno scenario tipico è una sorta di sopravvalutazione. Di solito scopro di incontrare questa situazione quando sto recuperando un'entità da un database che ha una proprietà del tipo di riferimento figlio che può o non può essere ancora popolata:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClass
dovrebbe fornire un public static readonly
membro di un Empty
valore del suo tipo. Vedi String.Empty
su MSDN .
??=
operatore?