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

Implementing my own generic collection in C#

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

您必须实施 IList<T> 才能通过索引访问 collection 的项目。 IList<T> 继承自 ICollection<T>IEnumerable<T>IEnumerable,因此您仍然可以得到它们。

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

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

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

你的 collection 是干什么用的?如果您实现 IEnumerable<T>(这需要实现 IEnumerable,那么您将拥有一个可枚举的 object。如果您还拥有一个 Add() 方法,那么您将拥有一个可枚举的object 与 collection 初始化一起工作。除此之外,查看常见的 collection 接口并询问它们是否对您的用例有用,特别是 ICollection<T>(在特别)和 IList<T>(特别是索引)。