2011-05-31 131 views
0

看起來這個問題經常被問到,但是仔細看過他們,我發現我仍然沒有幫助。我正在進入oop的第一步,我需要創建一個具有「產品」屬性的對象,該屬性是「產品」類最多7個可能對象的數組。我只是很少理解{get; set;}方法,並且正在閱讀它,但我希望能夠在此處嘗試使用的語法獲得一些幫助。我正在使用C#。我的代碼如下:創建一個對象數組?

public class Submission 
{ 

    public Submission() {} 
    public int SubmissionId {get;set;} 

    public int CustId {get;set;} 

    public int BroId {get;set;} 

    public int Coverage {get;set;} 

      public Array Products // what goes here? It's a mystery. 
} 

回答

1

在這種情況下,我認爲你不想要一個自動實現的屬性。相反,像這樣做:

//backing store for your public property 
private Product[] _products = new Product[7]; 

public Product[] Products { get {return _products;}} 

,然後在構造函數中:

foreach(var item in _products) {item = new Product(); } 

你可以帶一個私人二傳手,而不是明確的後備存儲做到這一點,但我認爲這種方式更容易爲就像設置陣列的大小一樣。

請注意,我只爲該屬性提供了一個getter。你不需要一個setter,因爲這將允許某人用一個全新的數組替換你的財產。只是提供一個吸氣器仍然會允許某人操縱該財產。另外,通常我會爲此推薦一個集合而不是數組,但由於您希望固定大小的項目數量可能更適合。

+0

爲什麼你更喜歡明確的支持領域而不是簡單地使用私人二傳手? – 2011-05-31 15:50:24

+0

@Anthony - 因爲支持商店中的[7]。我會爲列表和其他集合使用私有setter。其中1/6,1/2打,真的。 – 2011-05-31 16:02:01

-1

使用IList。您可以使用它的自動屬性。

+0

爲什麼IList降低了投票率?我看到喬爾首先提出,然後編輯到另一種方法。任何IList的原因是一個壞主意? – 2011-06-01 05:32:30

0

你可以寫這樣的:

public Products[] { get; set; }

,並在類的構造函數:

public Submission() { Products = new Product[7]; }

1

如果達到使用泛型集合,我會用:

public List<Product> Products { get; private set; } 

或其一些變化。

+0

你可能不想爲這個屬性設置一個setter。 – 2011-05-31 15:41:47

+0

可能不是。更新後反映如此。 – BAKeele 2011-05-31 15:45:49