Considere o seguinte cenário típico:
if(myObject == null) {
myObject = new myClass();
}
Estou imaginando o que é pensado na seguinte substituição usando o operador coalescente-nulo:
myObject = myObject ?? new myClass();
Não tenho certeza se devo usar o segundo formulário. Parece uma taquigrafia legal, mas a myObject = myObjectconstrução no começo parece que pode ser um pouco de cheiro de código.
Isso é uma coisa razoável a se fazer ou existe uma taquigrafia melhor que estou perdendo? Ou talvez: "São três linhas, supere isso!"?
Edit: Como já foi mencionado, talvez chamar isso de cenário típico seja um exagero. Normalmente, encontro essa situação ao recuperar uma entidade de um banco de dados que possui uma propriedade do tipo de referência filho que ainda pode ou não ser preenchida:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClassdeve fornecer um public static readonlymembro de um Emptyvalor de seu tipo. Veja String.Emptyno MSDN .
??=operador?