空合并赋值运算符?

Cod*_*ing 21 c# language-features operators null-coalescing-operator

如果C#允许一个?? =运算符,那将是非常好的.我发现自己经常写下面的内容:

something = something ?? new Something();
Run Code Online (Sandbox Code Playgroud)

我宁愿这样写:

something ??= new Something();
Run Code Online (Sandbox Code Playgroud)

思考?新的语言扩展总是存在争议的本质.

Bob*_*man 15

像Ruby这样的其他编程语言经常使用它:

something ||= Something.new
Run Code Online (Sandbox Code Playgroud)


phi*_*hil 6

如果'something'是属性访问器的私有字段,则可以执行以下操作....如果发现该字段为null,则执行赋值.

private Something something;
public Something Something
{
    get
    {
        return something ?? (something = new Something());
    }
}
Run Code Online (Sandbox Code Playgroud)