在C#中实现我自己的泛型集合

问题描述 投票:-1回答:2

我试图在C#中编写我自己的通用集合(List<T>),但却对接口感到困惑。据我所知,为了创建自己的集合,我需要实现几个接口,如ICollection,IList,IEnumerator,IEnumerable等。但我不能真正理解我需要哪些接口。提前致谢

c# generic-collections
2个回答
0
投票

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

对于无法通过索引访问项目的更基本的集合,您可以实现ICollection<T>,它通过继承来附带IEnumerable<T>IEnumerable

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

您还应该考虑继承System.Collections.ObjectModel.Collection<T>,这是推荐的方式,因为通常的样板接口实现已经为您完成,您可以专注于使您的集合特殊的部分。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.