我在几个地方读过,应该使用System.Collections.Generic命名空间中的泛型集合类,而不是System.Collections命名空间中的类(如ArrayList )。我无法理解,如何更好,因为两者都是收藏?
发布于 2015-12-29 16:20:06
泛型集合类型允许强烈键入集合。以这个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];因此:没有装箱和取消装箱,没有运行时错误,因为有一个错误的转换。类型安全对于程序员和用户来说是一件好事。尽可能多地使用泛型集合,并且只有在必要时才使用非泛型集合。
https://stackoverflow.com/questions/34514877
复制相似问题