首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Collections.Generic对System.Collections?

System.Collections.Generic对System.Collections?
EN

Stack Overflow用户
提问于 2015-12-29 16:16:46
回答 1查看 7.9K关注 0票数 5

我在几个地方读过,应该使用System.Collections.Generic命名空间中的泛型集合类,而不是System.Collections命名空间中的类(如ArrayList )。我无法理解,如何更好,因为两者都是收藏?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-29 16:20:06

泛型集合类型允许强烈键入集合。以这个ArrayList为例,我们希望它包含狗:

代码语言:javascript
复制
ArrayList a = new ArrayList();
a.Add(new Dog());

如果您想要获得第一个项目,您需要转换结果,因为Dog d = a[0];不工作。所以我们这样做:

代码语言:javascript
复制
Dog d = (Dog)a[0];

但是编译器也允许这样做:

代码语言:javascript
复制
Cat c = (Cat)a[0];

泛型允许您这样做:

代码语言:javascript
复制
List<Dog> a = new List<Dog>();
a.Add(new Dog());

Dog d = a[0];

看见!没有演员。我们不需要帮助编译器理解列表中只能有狗。它知道的。

而且,这不会编译:

代码语言:javascript
复制
Cat c = a[0];

因此:没有装箱和取消装箱,没有运行时错误,因为有一个错误的转换。类型安全对于程序员和用户来说是一件好事。尽可能多地使用泛型集合,并且只有在必要时才使用非泛型集合。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34514877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档