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 = myObject
konstrukcja 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();
MyClass
powinien podać element public static readonly
członkowski Empty
wartości tego typu. Zobacz String.Empty
w MSDN .
??=
operatora?