我遇到了以下代码:
var collection = new Collection<string>();
我没有看到 Collection 类使用太多,也找不到太多关于它的用途的信息。查看 .NET Framework 源代码,它几乎只是一个 List 的包装器,因为它存储了一个 List 成员字段。它的构造函数如下:
public Collection()
{
this.items = (IList<T>) new List<T>();
}
它还实现了IList。因此,您可以将 Collection 声明为:
IList<string> collection = new Collection<string>();
对我来说,这在功能上等同于创建一个列表:
IList<string> collection = new List<string>();
那么你什么时候想在你自己的代码中在 List 上使用它呢?我看到它是其他 .NET 集合的基类,但为什么它们会将其作为公共具体(而不是内部和/或抽象)包含在内?
关于可能重复的评论——相关问题的答案似乎说 Collection 类应该用作基类。我真正要问的是:
- 如果在您自己的代码中使用,为什么不使用 List 作为基类呢?
- 在你自己的代码中实例化一个新的 Collection 来代替 List 真的有意义吗?
- 如果它真的只是提供作为一个基类,为什么它不是抽象的?