在C#中实现我自己的通用集合

时间:2019-03-06 10:45:29

标签: c# generic-collections

我试图用C#编写我自己的通用集合(List<T>),但对接口感到困惑。据我了解,为了创建自己的集合,我需要实现几个接口,例如ICollection,IList,IEnumerator,IEnumerable等。但是我无法真正理解需要哪些接口。 预先感谢

2 个答案:

答案 0 :(得分:0)

您必须实现IList<T>才能通过其索引访问集合的项目。 IList<T>继承自ICollection<T>IEnumerable<T>IEnumerable,因此无论如何您都会得到这些。

对于更基本的集合,而无需按索引访问项目,可以实现ICollection<T>,该IEnumerable<T>IEnumerable通过继承来实现。

可以另外实现IReadOnlyList<T>(或分别实现IReadOnlyCollection<T>),但这通常不是必需的。

您还应该考虑从System.Collections.ObjectModel.Collection<T>继承,这是推荐的方法,因为通常的样板接口实现已为您完成,您可以集中精力使集合变得特别。

答案 1 :(得分:0)

您的收藏目的是什么?如果您实现IEnumerable<T>(需要实现IEnumerable,那么您将拥有一个可枚举的对象。如果您还拥有一个Add()方法,那么您将拥有一个与之兼容的可枚举对象集合初始化。此外,请查看常见的集合接口,并询问它们对您的用例是否有用,尤其是ICollection<T>(特别是添加和删除)和IList<T>(特别是索引)。