我需要设计自己的定制化GenericCollection
类。现在我有很多选项可以使用IEnumerable
,ICollection
和IList
进行推导,后者提供了一些附加功能。
如果我使用IEnumerable<T>
,我可能需要声明实际保存集合的对象,比如在这个例子中的_list
,这让我有点困惑。
public class GenericCollection<T> : IEnumerable<T>
{
private List<T> _list;
//...
}
但是如果我使用ICollection<T>
或者IList<T>
,我就不需要声明List
对象,因为它会被隐式地提供。
public class GenericCollection<T> : IList<T>
{
// no need for List object
//private List<T> _list;
//...
}
这两种方法在性能方面有什么区别?在设计自己的集合时,每种情况下都应该选择哪个?我想使用
IEnumerable<T>
来实现轻量级集合和良好性能,但具体如何以及一些强烈理由是什么?我查看了一些现有的帖子,但没有提供所需的信息。 返回'IList' vs 'ICollection' vs 'Collection'