簡體   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