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