请考虑以下典型情况:
if(myObject == null) {
myObject = new myClass();
}
我想知道使用null-coalescing运算符进行以下替换的想法:
myObject = myObject ?? new myClass();
我不确定是否应该使用第二种形式。这似乎是一个不错的速记,但是myObject = myObject
开始时的构造似乎有点代码气味。
这是合理的做法,还是我缺少更好的速记?或者,也许是“三行,克服它!”?
编辑:如上所述,也许将其称为典型场景是一种夸大其词的说法。我通常会在从具有子引用类型属性的数据库中检索一个实体时遇到这种情况,该子引用类型属性可能已填充也可能尚未填充:
myClass myObject = myClassService.getById(id);
myObject.myChildObject = myObject.myChildObject ?? new myChildClass();
??=
操作员吗?