【问题标题】:Null-coalescing operator - Which of the following do you prefer? [duplicate]Null-coalescing 运算符 - 您更喜欢以下哪个? [复制]
【发布时间】:2011-07-22 19:43:44
【问题描述】:

可能重复:
In your opinion what is more readable: ?? (operator) or use of if's

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

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

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

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

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

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

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

【问题讨论】:

标签: c# null-coalescing-operator


【解决方案1】:

就属性而言,有一个有趣的语法:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 任何体面的程序员要么已经知道它的含义,要么问某人(一次)
    • 你会惊讶地发现“体面的程序员”不知道什么......
    • 我的意思是,如果他们“体面”,他们会问,然后他们就会知道。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多