繁体   English   中英

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

[英]Implementing my own generic collection in C#

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM