假设您有一个检查列表是否为空的方法。如果是这样,它会实例化它。
一般来说,我们会这样做:
if (StringList == null)
StringList = new List<string>();
我最近了解了空合并运算符,并很想将其更改为:
StringList = StringList ?? new List<string>();
它更紧凑,看起来它会被编译成与“传统”方法相同的指令集。
可能有点迂腐,但我想知道您是否对这种方法以及您实际使用的方法有任何保留。
假设您有一个检查列表是否为空的方法。如果是这样,它会实例化它。
一般来说,我们会这样做:
if (StringList == null)
StringList = new List<string>();
我最近了解了空合并运算符,并很想将其更改为:
StringList = StringList ?? new List<string>();
它更紧凑,看起来它会被编译成与“传统”方法相同的指令集。
可能有点迂腐,但我想知道您是否对这种方法以及您实际使用的方法有任何保留。
在属性的情况下,有一个有趣的语法:
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>()); }
}
一个微优化,也许 - 但很可爱。
这完全取决于你的团队。不是每个人都能理解??操作员,但它更清洁。一旦你习惯了它,这是一个很好的方法。不过,我仍然坚持使用 if 检查。你永远不知道谁会更新你的代码。