通常,您必须实现一个集合,因为它不存在于.NET Framework中。在我在网上找到的示例中,新集合通常是基于另一个集合(例如,List<T>
)构建的:这样就可以避免管理集合的大小调整。
public class CustomCollection<T>
{
private List<T> _baseArray;
...
public CustomCollection(...)
{
this._baseArray = new List<T>(...);
}
}
_baseArray
)被声明为readonly
。为什么?答案 0 :(得分:3)
通常最好从众多内置集合类中的一个继承来创建自己的集合,而不是艰难地进行。 Collection<T>
是一个很好的起点,没有人阻止你继承List<T>
本身。
答案 1 :(得分:2)
对于#2:如果私有成员仅在构造函数中分配或在声明时,它可以是readonly
。如果您只有一个基础集合并且不需要重新创建它,通常就是这样。
答案 2 :(得分:-1)
我认为这种方法的一个很大的缺点是你不能在自定义集合上使用LINQ,除非你实现IEnumerable
。更好的方法可能是根据需要对方法进行子类化和强制实施,例如:
public class FooList<T> : List<T>
{
public new void Add(T item)
{
// any FooList-specific logic regarding adding items
base.Add(item);
}
}
对于readonly
关键字,这意味着您只能在构造函数中设置变量。