注:本文仅供菜鸟和初级入门者参考,欢迎高手指导,切勿拍砖,兄弟身子骨单薄,承受不起。博客园原创文章,转载请注明作者和出处!
第一部分,我们模仿类库,先抽象出容器(集合)类数据结构中所需要的最基本的一些接口,但是暂不实现他们。这些接口所代表的功能十分有限,只是作为数据结构的入门和理解使用,以后也可以在此基础上自行继续扩充。
在给出代码前先大体说明一下思路:
1、首先定义一个 My 命名空间,目的是为了避免与类库中的容器类相冲突,以后自定义的数据结构类都放在这个空间里
2、定义一个 Collections 空间 ,它将包含基本接口、数组类、链表类、栈、队列等等一切和容器(集合)有关的接口和类
3、自定义一个异常类 CollectionsException,在 Collections 空间里发生什么怪事情,它都会蹦出来
4、定义 ICollection<T> 接口,它抽象出了一些操作容器(集合)的最基本操作,如添加、删除、清空等等,这些操作不用给出过多解释,一看名称就知道是什么意思了。另外, ICollection<T> 接口继承了类库中的 IEnumerable<T>
5、定义 IList<T> 接口,他继承并扩展了上面的 ICollection<T> 接口,也都是最基本的操作,主要是把和索引 Index 有关的操作放在这里
6、定义 ISortable<T> 接口,所有实现了这个接口的容器(集合)类都将可以排序
7、定义 ISort<T> 接口,为不同的排序算法抽象出的公共接口
不多说了,看看代码就什么都明白了,很简单的,代码如下
Collections.cs








































将和排序有关的代码放在另一个文件里,方便管理
Sort.cs
























这样,我们定义好了一些最基本的接口,下一节就可以用他们来封装数组了。
未完待续。。。。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!