-1

可能重复:
在您看来,什么更具可读性:?? (运算符)或使用 if 的

假设您有一个检查列表是否为空的方法。如果是这样,它会实例化它。

一般来说,我们会这样做:

if (StringList == null)
    StringList = new List<string>();

我最近了解了空合并运算符,并很想将其更改为:

StringList = StringList ?? new List<string>();

它更紧凑,看起来它会被编译成与“传统”方法相同的指令集。

可能有点迂腐,但我想知道您是否对这种方法以及您实际使用的方法有任何保留。

4

2 回答 2

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>()); }
}

一个微优化,也许 - 但很可爱。

于 2011-03-25T11:07:45.377 回答
1

这完全取决于你的团队。不是每个人都能理解??操作员,但它更清洁。一旦你习惯了它,这是一个很好的方法。不过,我仍然坚持使用 if 检查。你永远不知道谁会更新你的代码。

于 2011-03-25T10:35:39.203 回答