可能重复:
In your opinion what is more readable: ?? (operator) or use of if's
假设您有一个检查列表为空的方法。如果是这样,它会实例化它。
一般来说,我们会这样做:
if (StringList == null)
StringList = new List<string>();
我最近了解了null-coalescing运算符,我很想将其更改为:
StringList = StringList ?? new List<string>();
它更紧凑,看起来它将被编译为与'传统'方法相同的指令集。
可能有点迂腐,但我想知道你是否对这种方法有任何保留,而且你实际上是在使用它。
答案 0 :(得分:3)
对于属性,有一个有趣的语法:
private someType foo;
public SomeType Foo {
get { return foo ?? (foo = {init}); }
}
这个1-liner可以使用dup stloc而不是分别存储和加载字段。例如:
private List<string> foo;
public List<string> Foo {
get { return foo ?? (foo = new List<string>()); }
}
微观优化,也许 - 但非常可爱。
答案 1 :(得分:1)
这一切都取决于你的团队。不是每个人都能理解??操作员,但它更清洁。一旦你习惯了它,这是一个很好的方法。我仍然坚持if检查。你永远不知道谁会更新你的代码。