2010-07-24 26 views
4

我需要組裝列表的列表,但整個想法聽起來不太漂亮。 這聽起來很麻煩。有一些其他的模式來保存列表。列表的味道不好,我的其他選項是什麼

我的第一個雖然是使用Arraylist的arrayList。

C#,.NET-2

更多:將被存儲然後數量的項目是小,但總是在變化。

注: 我就這個問題使用的ArrayList的修正:

What's wrong with using an ArrayList in .net-2.0

+0

從不使用ArrayList。 – tster 2010-07-24 19:24:16

+2

我以前見過那條評論。數組列表有什麼問題 – fishhead 2010-07-24 19:25:53

+0

缺少類型安全。 – recursive 2010-07-24 19:49:30

回答

6

沒有什麼錯List<List<T>> - LINQ的SelectMany可以是你在這種情況下的朋友。

+1

雖然評論有效(並且獲得+1),但LINQ僅在3.5及更高版本中可用,但OP列出了2.0。 – 2010-07-24 19:22:29

+0

他說它是.Net 2.0。 – DOK 2010-07-24 19:22:35

+0

您可以使用LinqBridge(或類似的)將Linq轉換爲.Net 2.0中的對象。 – DaveShaw 2010-07-24 20:07:38

1

沒有問題。我已經使用過它,它適合我當時需要的東西。該模式是列表的列表。 :)

1

列表清單本身不是一種難聞的氣味。如果您的列表全部大小相同,則可能需要使用二維數組,例如int[2,2],但是如果列表的長度不同,那麼列表的列表是正確的路線,而不是正式編碼一個衣衫襤褸的二維數組的類。

+0

您也可以直接在C#中使用鋸齒形數組 - 不需要「爲破損的2D數組正式編碼類」 - 已經在C# 。 – 2010-07-24 19:46:23

2

如何使用在自定義類中創建的對象?

例如,客戶可以有多個地址。創建一個具有Address屬性的Customer對象。然後,您可以擁有一個客戶的集合(數組,ArrayList等),並且每個客戶都可以擁有一組地址。

這適合多種信息,如產品類別中的產品,部門中的員工。

這樣處理層次關係更容易進行編碼。

2

你可以,但最好把它包裝到一個具有明確定義的公共方法的類中。

1

您當然可以使用泛型列表或非泛型變體ArrayList來做到這一點。

List<List<string>> listOfLists = new List<List<string>>(); 
listOfLists.Add(new List<string>()); 
listOfLists.Add(new List<string>()); 

ArrayList stringListOfStringLists = new ArrayList(); 
stringListOfStringLists.Add(new ArrayList()); 
stringListOfStringLists.Add(new ArrayList()); 
+1

-1提到ArrayList是一個選項。經驗法則,從來沒有使用ArrayList。 – tster 2010-07-24 19:23:56

+3

爲什麼不呢? ArrayList有什麼問題? – 2010-07-24 19:30:42

+1

@約翰Kugelman - 類型安全,拳擊和拆箱費用,即表現 – 2010-07-24 19:40:38

相關問題