实例化类型列表的属性<>

时间:2011-03-17 20:36:17

标签: c#

我在班级

中创建了一个List类型的属性
public List<string> CategoryRef { get; set; }

现在,当我想在列表中添加一个字符串时,我尝试

Product p=new Product();
p.CategoryRef.Add("Nick");

编译器对我大吼,说对象没有设置为对象的实例。如何实例化一个属性?

3 个答案:

答案 0 :(得分:18)

在构造函数中,您需要说

this.CategoryRef = new List<string>();

所有

public List<string> CategoryRef { get; set; }

确实声明了一个名为List<string>的{​​{1}}类型的自动属性。隐含在此自动属性后面的是支持字段,但该支持字段接收类型为CategoryRef的对象的默认值。因此,默认情况下,支持字段为List<string>,这就是您必须在构造函数中设置它的原因(或者在第一次使用它之前的其他位置)。

最后,你可能不应该公开曝光setter。至少,最好说

null

您真的希望班级客户能够为public List<string> CategoryRef { get; private set; } 分配新列表吗?可能不是。

在这种情况下,我实际上更喜欢手动属性,以便我可以只读取后备字段。

CategoryRef

答案 1 :(得分:3)

在对象的构造函数中,您应该有一行将属性设置为新列表。

public class Product{
   public Product()
   {
      CategoryRef = new List<string>();
   }

   public List<string> CategoryRef{ get; set;}
}

答案 2 :(得分:1)

我可能会尝试类似下面的方法

public class Product{

   public List<string> CategoryRef{ get; set;} = new List<string>();

}