代码之家  ›  专栏  ›  技术社区  ›  Jimmyt1988

使属性getter和setter相等(自动属性初始值设定项)

  •  2
  • Jimmyt1988  · 技术社区  · 6 年前

    有什么区别:

    public List<MyType> Something{ get; set; } = new List<MyType>();
    

    public List<MyType> Something{ 
        get{
            return new List<MyType>();
        }
        //set...
    }
    

    语境:
    我不确定我在代码中看到的行为。构造函数上有一个服务,但是 null 在未来的方法调用中,我假设是类的同一个实例。

    1 回复  |  直到 6 年前
        1
  •  8
  •   Mong Zhu Bart de Boer    6 年前

    第一行:

    public List<MyType> Something{ get; set; } = new List<MyType>();
    

    将在实例化对象(具有此属性)时调用一次。它是一次创建 Something .

    第二个例子是getter的显式实现。每次你进入 某物 它将返回一个新的空列表。

    编辑:

    第一行称为 auto-property initializer 详细答案请看 a post by Jon Skeet . 此功能自C 6.0起就存在