有没有以下...

    SomeType _someProperty;
    public SomeType SomeProperty
    {
        get
        {
            if (_someProperty == null)
                _someProperty = new SomeType();
            return _someProperty;
        }
    }

...具有与以下相同的功能?
    SomeType _someProperty;
    public SomeType SomeProperty
    {
        get { return _someProperty ?? (_someProperty = new SomeType()); }
    }

根据 ReSharper 的说法,他们确实这样做了。如果是这样,有人可以解释第二个块的语法吗?

最佳答案

是的,它们是相同的功能。
??null coalescing operator 。如果不为空,则运算符返回运算符之前的值,如果前面的值为空,则返回运算符之后的值。

在这种情况下,通过将表达式的第二部分包装在 params 中,如果 _requiredFieldValidator 为空,则在返回它之前将一个新对象分配给 __requiredFieldValidator 支持字段。

如果没有括号,则在返回之前不会赋值,这会导致以下编译错误:



括号保证正确计算赋值表达式。

关于c# - ReSharper 想要 "Optimize"我的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32596029/

10-17 00:40