如何在C#中的类中创建自动实现的列表属性?

时间:2015-02-10 13:06:30

标签: c# list class properties

首先,我用这样的字段创建了一个类:

class Person
{
    public string name;
    public List<Thing> things = new List<Thing>();

    public Person(string name)
    {
        this.name = name;
    }
}

并直接更改了类外的字段things,但后来发现这不是最佳实践,因为类的字段应该是私有的,而是使用公共属性来访问。我决定将这些字段更改为自动实现的属性,因为我目前不需要在属性中进行任何验证:

class Person
{
    public string Name { get; set; }
    public List<Thing> Things { get; set; }

    public Person(string name)
    {
        this.Name = name;
    }
}

根据自动实现属性的MSDN页面(https://msdn.microsoft.com/en-us/library/bb384054.aspx),编译器为该属性创建一个私有支持字段。

但是,使用list属性我不确定编译器是否自动实例化列表支持字段,所以我的问题是将列表作为自动实现的属性工作为上面的第二个例子,或者我是否也需要实例化列表,如果是,我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

  

我不确定编译器是否自动实例化列表支持字段

没有。如果不实例化它,默认情况下它将为null。

  

我是否也需要实例化列表,如果是,我应该怎么做?

您需要自己实例化它。这通常/可以在构造函数中完成。 E.g:

public Person(string name) 
{
    this.Name = name;
    this.Things = new List<Thing>();
}