System.Collections.Generic vs System.Collections? [复制]
Posted
技术标签:
【中文标题】System.Collections.Generic vs System.Collections? [复制]【英文标题】:System.Collections.Generic vs System.Collections? [duplicate] 【发布时间】:2016-04-03 13:31:21 【问题描述】:我在几个地方读到过,应该使用 System.Collections.Generic 命名空间中的通用集合类,而不是 System.Collections 命名空间中的 ArrayList 等类。我无法理解,因为两者都是收藏品,它如何更好?
【问题讨论】:
泛型一提供编译类型安全 泛型是后来添加到框架中的。一般来说,这意味着您可以使用类型化集合,而不是对象集合。 【参考方案1】:通用集合类型允许强类型化您的集合。以这个ArrayList
为例,我们想要包含狗:
ArrayList a = new ArrayList();
a.Add(new Dog());
如果要取出第一个项目,则需要转换结果,因为Dog d = a[0];
不起作用。所以我们这样做:
Dog d = (Dog)a[0];
但编译器也允许这样做:
Cat c = (Cat)a[0];
泛型允许您这样做:
List<Dog> a = new List<Dog>();
a.Add(new Dog());
Dog d = a[0];
看!没有铸造。我们不必帮助编译器了解该列表中只能有狗。它知道。
另外,这不会编译:
Cat c = a[0];
所以:没有装箱和拆箱,没有运行时错误,因为有错误的演员表。类型安全是程序员和用户的福气。尽可能多地使用泛型集合,并且仅在必要时使用非泛型集合。
【讨论】:
谢谢,现在我可以更清楚地理解了。以上是关于System.Collections.Generic vs System.Collections? [复制]的主要内容,如果未能解决你的问题,请参考以下文章