[英]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.