C#中迭代器模式的示例分析
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"C#中迭代器模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中迭代器模式的示例分析"这篇文章吧。什么是迭代器模式
千家信息网最后更新 2025年11月08日C#中迭代器模式的示例分析
这篇文章主要为大家展示了"C#中迭代器模式的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中迭代器模式的示例分析"这篇文章吧。
什么是迭代器模式?
迭代器模式(Iterator):提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
何时使用迭代器模式?
当需要访问一个聚合对象,而且不管这些对象是什么都需要遍历的时候,需要考虑使用迭代器模式。
迭代器模式的组成
Iterator:迭代器抽象类,用于定义得到开始对象,对到下一个对象,判断是否到结尾,当前对象等抽象方法,统一接口。
ConcreteAggregate:保存聚合对象。
ConcreteIterator:继承于Iterator,实现具体如何对聚合对象的操作。
迭代器模式具体实现
迭代器模式的结构

迭代器模式的实现:
Iterator类:
abstract class Iterator{ public abstract object First(); public abstract object Next(); public abstract bool IsDone(); public abstract object CurrentItem();}ConcreteIterator类:
//顺序遍历class ConcreteIterator : Iterator{ private ConcreteAggregate aggregate; private int current = 0; //将现在的数据组传输进来 public ConcreteIterator(ConcreteAggregate aggregate) { this.aggregate = aggregate; } public override object CurrentItem() { return aggregate[current]; } public override object First() { return aggregate[0]; } public override bool IsDone() { return current >= aggregate.Count ? true : false; } public override object Next() { object obj = null; current++; if (current < aggregate.Count) { obj = aggregate[current]; } return obj; }}//逆序遍历class ConcreteIteratorDesc : Iterator{ private ConcreteAggregate aggregate; private int current = 0; //传输数据进来 public ConcreteIteratorDesc(ConcreteAggregate aggregate) { this.aggregate = aggregate; current = aggregate.Count - 1; } public override object CurrentItem() { return aggregate[current]; } public override object First() { return aggregate[aggregate.Count - 1]; } public override bool IsDone() { return current < 0 ? true:false; } public override object Next() { object obj = null; current--; if (current >= 0) { obj = aggregate[current]; } return obj; }}ConcreteAggregate类:
////// 创建迭代器/// 在这里看并没有什么具体的用处/// abstract class Aggregate{ public abstract Iterator CreateIterator();}////// 作用是保存数据,保存的数据是一系列数据,所以用数组/// 然后传输数据给ConcreteIterator/// class ConcreteAggregate : Aggregate{ //用于存放聚合对象 private IList
主函数调用:
static void Main(string[] args){ ConcreteAggregate a = new ConcreteAggregate(); a[0] = "A"; a[1] = "B"; a[2] = "C"; a[3] = "D"; a[4] = "E"; a[5] = "F"; Iterator i = new ConcreteIterator(a); object item = i.First(); while (!i.IsDone()) { Console.WriteLine("{0} buy ticket,please", i.CurrentItem()); i.Next(); } Iterator id = new ConcreteIteratorDesc(a); object itemdec = id.First(); while (!id.IsDone()) { Console.WriteLine("{0} buy ticket,please", id.CurrentItem()); id.Next(); } Console.Read();}.NET的迭代器实现
迭代器模式在我们现在的使用中其实没有那么麻烦,因为.NET框架已经准备好了相关的接口,只需要实现就好了。
static void Main(string[] args){ IList a = new List(); a.Add("A"); a.Add("B"); a.Add("C"); a.Add("D"); a.Add("E"); a.Add("F"); //看见遍历首先考虑foreach foreach (string item in a) { Console.WriteLine("{0} buy ticket,please", item); } //支持在泛型集合上进行简单迭代。 IEnumerator e = a.GetEnumerator(); while (e.MoveNext()) { Console.WriteLine("{0} buy ticket,please", e.Current); } Console.Read();} 补充:IEnumerator
备注:文中所有代码及知识点均来自于《大话设计模式》,本人属于边学边看边敲代码边总结的阶段。
以上是"C#中迭代器模式的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
迭代
模式
对象
数据
示例
C#
分析
内容
数组
篇文章
传输
代码
接口
方法
知识
顺序
学习
帮助
也就是
作用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全宣传周主题口号
快速批量巡检服务器硬件配置工具
丰台区信息网络技术推广哪家好
网络安全立法研究的实践报告
软件开发英语怎么读
六安电商软件开发公司
青少年网络安全事迹
杭州湖畔网络技术有限公
如何核算一个软件开发成本
web服务器cpu
qt 建立多个数据库
重庆市 软件开发
个人开发票软件开发费
sql数据库修复卡住了
计算机的网络技术是什么意思
存储怎么连接服务器
滴滴网络安全审查公众号
macsvn服务器搭建
中琅条码打印数据库
绘图板软件开发实验报告
郝晓伟 网络安全
软件开发无工作经验如何面试
2018信息网络安全
网络安全共创网络文明共享
软件开发框架有什么好处
青少年网络安全事迹
咸鱼之王找回服务器
通付盾中国网络安全能力图谱
虚拟机 dns服务器
搭建mc服务器需要多少钱