使属性获取器和设置器相等(自动属性初始化器)

时间:2018-08-21 10:42:44

标签: c# properties

之间有什么区别

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

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

上下文:
我不确定我在代码中看到的行为。构造函数上有服务,但是在我假定是类的相同实例的将来的方法调用中,null

1 个答案:

答案 0 :(得分:8)

第一行:

public List<MyType> Something{ get; set; } = new List<MyType>();
实例化具有此属性的对象时,将调用

一次。这是Something实例的一次创建。

第二个示例是getter的显式实现。每次您访问Something的getter时,它将返回一个新的空列表。

编辑:

第一行称为auto-property initializer,有关详细答案,请查看a post by Jon Skeet。从C#6.0开始存在此功能