当前位置:  开发笔记 > 编程语言 > 正文

System.Collections.Generic vs System.Collections?

如何解决《System.Collections.GenericvsSystem.Collections?》经验,为你挑选了1个好方法。

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



1> Patrick Hofm..:

通用集合类型允许强烈键入集合.以此为例ArrayList,我们想要包含狗:

ArrayList a = new ArrayList();
a.Add(new Dog());

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

Dog d = (Dog)a[0];

但编译器也允许这样:

Cat c = (Cat)a[0];

泛型允许您这样做:

List a = new List();
a.Add(new Dog());

Dog d = a[0];

看到!没有铸造.我们没有必要帮助编译器理解该列表中只能有狗.它知道这一点.

此外,这将无法编译:

Cat c = a[0];

所以:没有装箱和拆箱,没有运行时错误,因为有错误的演员.类型安全对程序员和用户来说是一种福气.尽可能多地使用泛型集合,如果必须,只使用非泛型集合.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有