我在類中創建類型列表的屬性現在實例化屬性的類型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;}
}