加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ReSharper想要“优化”我的代码

发布时间:2020-12-15 19:58:06 所属栏目:百科 来源:网络整理
导读:以下是…… SomeType _someProperty; public SomeType SomeProperty { get { if (_someProperty == null) _someProperty = new SomeType(); return _someProperty; } } …具有与以下相同的功能? SomeType _someProperty; public SomeType SomeProperty { ge
以下是……

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,则运算符返回运算符之前的值,如果前一个值为null,则返回运算符之后的值.

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

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

The left-hand side of an assignment must be a variable,property or
indexer

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读