我在我的类中创建了List类型的属性
public List<string> CategoryRef { get; set; }
Run Code Online (Sandbox Code Playgroud)
现在,当我想在列表中添加一个字符串时,我尝试了
Product p=new Product();
p.CategoryRef.Add("Nick");
Run Code Online (Sandbox Code Playgroud)
编译器对我大吼,说对象没有设置为对象的实例.如何实例化一个属性?
jas*_*son 19
在构造函数中,您需要说
this.CategoryRef = new List<string>();
Run Code Online (Sandbox Code Playgroud)
这一切
public List<string> CategoryRef { get; set; }
Run Code Online (Sandbox Code Playgroud)
是声明一个List<string>名为的自动属性CategoryRef.隐藏在此自动属性后面的是支持字段,但该支持字段接收类型对象的默认值List<string>.因此,默认情况下,支持字段是null,这就是你必须在构造函数中设置它的原因(或者在第一次使用它之前的其他地方).
最后,您可能不应该公开公开setter.至少,最好说
public List<string> CategoryRef { get; private set; }
Run Code Online (Sandbox Code Playgroud)
您真的希望您班级的客户能够分配新列表CategoryRef吗?可能不是.
在这种情况下,我实际上更喜欢手动属性,以便我可以只读取后备字段.
private readonly List<string> categoryRef = new List<string>();
public List<string> CategoryRef {
get {
return this.categoryRef;
}
}
Run Code Online (Sandbox Code Playgroud)