我在类中创建类型列表的属性现在实例化属性的类型List <>
public List<string> CategoryRef { get; set; }
当我想一个字符串添加到列表中我尝试
Product p=new Product();
p.CategoryRef.Add("Nick");
编译器破口大骂在我说的对象不是设置为对象的实例。如何实例化一个属性?
我在类中创建类型列表的属性现在实例化属性的类型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; }
确实是声明了一个名为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;}
}