Rozważ następujący typowy scenariusz:
if(myObject == null) {
myObject = new myClass();
}
Zastanawiam się, co myśli się o następującym zastąpieniu za pomocą operatora zerowania:
myObject = myObject ?? new myClass();
Nie jestem pewien, czy powinienem używać drugiego formularza. Wygląda na to, że jest to ładny skrót, ale myObject = myObjectkonstrukcja na początku wydaje się być trochę zapachem kodu.
Czy jest to rozsądne, czy może istnieje lepszy skrót, którego mi brakuje? A może: „To trzy linie, przejedź to!”?
Edycja: Jak już wspomniano, być może nazwanie tego typowym scenariuszem jest przesadą. Zwykle spotykam się z tą sytuacją, gdy pobieram encję z bazy danych, która ma właściwość typu odwołania potomnego, która może być jeszcze zapełniona:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClasspowinien podać element public static readonlyczłonkowski Emptywartości tego typu. Zobacz String.Emptyw MSDN .
??=operatora?