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 = myObject
construçã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();
MyClass
deve fornecer um public static readonly
membro de um Empty
valor de seu tipo. Veja String.Empty
no MSDN .
??=
operador?