List <object>是ArrayList的一个很好的替代品吗?</object>

时间:2014-03-21 21:52:54

标签: c# arraylist .net-3.5 generic-list .net-4.5

我在旧版Compact Framework代码中使用的

ArrayList似乎在newfangled(.NET 4.5.1)代码中不可用。

我在其中存储自定义类的实例。

什么是它的好替代品 - List<Object>,还是有更合适的东西?

2 个答案:

答案 0 :(得分:4)

正如@HighCore在评论中提到的那样,你应该使用List的通用形式List<T>。如果您定义了几个需要包含在该List中的类,则它们可能具有公共属性,方法。在这种情况下,您可以为类组创建abstract类。

List<Object>是一个可能的替代品,但不是一个好的。

答案 1 :(得分:2)

是的,List<object>ArrayList的优秀替换

如果您想要一个可以存储任何内容的列表类型,您可以使用ArrayListList<object>作为集合类型。它将具有相同的性能和行为特征。

问题是:您为什么要使用ArrayList开头?如果你是来自.NET的pre-generics版本,那么你可能别无选择。您要么具有强类型数组(大小不变),要么ArrayList具有动态大小但在类型中过于“通用”。它可以存储任何东西。

现在,有了新的.NET和C#版本,现在是时候放手了。

(关于“net .NET和C#版本”的评论:显然“新”这里并不像2014年新版那样新,但与OP从仿制药中学到的任何教科书或源代码相比都是“新的”与使用ArrayList相比。)

您希望对集合进行强类型输入。它让您的生活更轻松,因为您知道集合项目中可用的字段/属性/成员等。

因此,您要做的是弄清楚元素的 base 类型是什么,并使集合成为List<BaseType>或类似,这将使您的生活成为现实整整很容易。

如果要存储一堆整数,请使用List<int>。如果您要存储一堆字符串,请使用List<string>。如果您要存储一堆SomeCustomObject类型的对象,请使用List<SomeCustomObject