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