[英]Instantiate A Property Of Type List<>
我在我的班级中创建了一个 List 类型的属性
public List<string> CategoryRef { get; set; }
现在当我想在列表中添加一个字符串时,我尝试
Product p=new Product();
p.CategoryRef.Add("Nick");
编译器对我大喊大叫,说对象没有设置为对象的实例。 如何实例化一个属性?
在构造函数中你需要说
this.CategoryRef = new List<string>();
这一切
public List<string> CategoryRef { get; set; }
do 是声明一个名为CategoryRef
List<string>
类型的自动属性。 这个自动属性的背后是一个支持字段,但该支持字段接收List<string>
类型对象的默认值。 因此,默认情况下,支持字段为null
,这就是为什么您必须在构造函数中(或在您第一次使用它之前的其他地方)设置它的原因。
最后,您可能不应该公开暴露 setter。 至少,最好说
public List<string> CategoryRef { get; private set; }
您真的希望您班级的客户能够为CategoryRef
分配一个新列表吗? 可能不是。
在这种情况下,我实际上更喜欢手动属性,以便我可以将支持字段设为只读。
private readonly List<string> categoryRef = new List<string>();
public List<string> CategoryRef {
get {
return this.categoryRef;
}
}
在对象的构造函数中,您应该有一行将属性设置为新列表。
public class Product{
public Product()
{
CategoryRef = new List<string>();
}
public List<string> CategoryRef{ get; set;}
}
我也许会尝试像下面这样的
public class Product{
public List<string> CategoryRef{ get; set;} = new List<string>();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.