<代码>界面迭代器 { 对象的第一个(); 对象Next (); bool结束(); CurrentItem对象(); } 类myIterator:迭代器 { 私人MyAggragate物品; 私人int cuttent=0; 公共myIterator (MyAggragate _items) { 项=_items; } 公共CurrentItem对象() { 返回项目(cuttent); } 公共对象第一次() { 返回条目[0]; } 公共bool结束() { 返回cuttent>=items.Count ?真:假; } 公共对象Next () { cuttent + +; 如果(cuttent祝辞=items.Count) 返回null; 返回项目(cuttent); } } 抽象类团聚体 { 公共抽象迭代器CreateIterator (); } 类MyAggragate:团聚体 { 私人IList列表=new List (); 公共int数 { 得到 { 返回list.Count; } } 公共字符串(int指数) { 得到 { 返回列表(指数); } 集 { 列表。插入(指数、价值); } } 公共覆盖迭代器CreateIterator () { 返回新myIterator(这个); } }//前端 静态void Main (string [] args) { MyAggragate=新MyAggragate (); 一个[0]="张三”; 一个[1]="李四”; 一个[2]="王五”; 一个[3]="王五2”; diedaiqi。迭代器我=new myIterator(一个); var=i.First项(); 控制台。WriteLine(“{0} 1项); 而(! i.isDone ()) { Console.WriteLine (“{0}”, i.CurrentItem ()); i.Next (); } Console.ReadLine (); }代码>
总结:访问聚集对象,不管该对象是什么,需要遍历的时候,就使用迭代器。
迭代器模式:为聚集提供开始,下一个,是否结束,当前处于哪一项的统一的接口。
c#的集合什么的已经在内部实现了迭代器。
foreach(字符串项)
{
console.write(“当前{0}“,项),
}的内部实现其实是:
IEnumerator
, (e.Next ())
{
console.write(“当前{0}“,e.Current);
}