2010-07-24 27 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

相关问题