Розглянемо наступний типовий сценарій:
if(myObject == null) {
myObject = new myClass();
}
Мені цікаво, що думає про наступну заміну за допомогою оператора зведення нуля:
myObject = myObject ?? new myClass();
Я не впевнений, чи варто мені використовувати другу форму. Це здається приємним скороченням, але myObject = myObject
спочатку конструкція здається, що це може бути трохи кодовим запахом.
Це розумна справа, чи є краща стенограма, яку я пропускаю? А може, "Це три рядки, здолайте!"?
Редагувати: Як уже згадувалося, можливо, називати це типовим сценарієм є чимось завищенням. Зазвичай я виявляю, що стикаюся з цією ситуацією, коли я виймаю сутність із бази даних, яка має дочірнє властивість типу довідкового характеру, яке може бути або не може бути заселене:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
MyClass
повинен надати public static readonly
члену Empty
значення свого типу. Дивіться String.Empty
на MSDN .
??=
оператора?