簡體   English   中英

實例化 List<> 類型的屬性

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM