【发布时间】:2010-11-28 07:32:01
【问题描述】:
只是一个一般的好奇心问题。为什么我们在创建项目时默认在 Visual Studio 中添加这个命名空间“System.Collections.Generic”而不是“System.Collections”?
泛型下的集合类是否比 System.Collections 中的集合类更受欢迎?
谢谢 哈沙
【问题讨论】:
标签: c#
只是一个一般的好奇心问题。为什么我们在创建项目时默认在 Visual Studio 中添加这个命名空间“System.Collections.Generic”而不是“System.Collections”?
泛型下的集合类是否比 System.Collections 中的集合类更受欢迎?
谢谢 哈沙
【问题讨论】:
标签: c#
.NET 2.0 添加了泛型集合,这将完全取代为 .NET 2.0 及更高版本构建的应用程序中非泛型集合的使用。
它们有很多优点,特别是因为它们带来了强类型化并避免了值类型的装箱。
至于为什么默认添加命名空间 - 我猜微软决定添加这个以鼓励使用它们而不是旧的 System.Collections 类。
【讨论】:
我怀疑如果 MS 发布带有泛型集合类的 .NET BCL,许多非泛型版本就不会包含在内。
话虽如此,在微软的代码中ArrayList 的用法还是蛮多的。
【讨论】:
ArrayList 的用法——您将看到它在 .NET 3.0(用于 WCF)中包含的 System.ServiceModel 命名空间中使用。在某些情况下ArrayList 的表现肯定优于List<object>。
泛型集合更容易使用,默认情况下包含它们对我来说很有意义。
【讨论】:
是的,泛型集合比常规集合更好,因为它们带来了强类型,可以防止装箱和拆箱,以及所有那些烦人的强制转换。
几乎没有理由使用常规集合。即使您不知道要存储哪种类型的对象,您仍然可以使用List<object> 之类的内容。
【讨论】: