日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

迭代器(Iterator)模式

發布時間:2024/9/5 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 迭代器(Iterator)模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

/*
*迭代器(Iterator)模式:提供貨一種方法順序反問一個聚合對象中的各個元素。
*/

?

?

ConcreteAggregate a = new ConcreteAggregate();a[0] = "A";a[1] = "B";a[2] = "C";a[3] = "D";Iterator i = new ConcreteIterator(a);object item = i.First();while (!i.IsDone()){Console.WriteLine("{0} 請買車票! ", i.CurrentItem());i.Next();}Console.ReadLine();/// <summary>/// 迭代器(Iterator) 抽象類/// </summary>abstract class Iterator{public abstract object First();public abstract object Next();public abstract bool IsDone();public abstract object CurrentItem();} /// <summary>/// Aggregate 集聚抽象類/// </summary>abstract class Aggregate{public abstract Iterator CreateIterator();}/// <summary>/// ConcreteIterator 具體迭代器/// </summary>class ConcreteIterator : Iterator{//創建一個具體集聚類對象private ConcreteAggregate aggregate;private int current = 0;//初始化具體集聚類傳入對象public ConcreteIterator(ConcreteAggregate aggregate){this.aggregate = aggregate;}public override object First(){return aggregate[0];} public override object Next(){object ret = null;current++;if (current < aggregate.Count)ret = aggregate[current];return ret;}public override bool IsDone(){return current >= aggregate.Count ? true : false;} public override object CurrentItem(){return aggregate[current];}}/// <summary>/// 具體 集聚類/// </summary>class ConcreteAggregate : Aggregate{private IList<object> items = new List<object>();public override Iterator CreateIterator(){return new ConcreteIterator(this);}public int Count{ get { return items.Count; } }//索引public object this[int index]{get { return items[index]; }set { items.Insert(index, value); }} }

?在.net中IEumerator 已經為你準備好了接口,你只要去實現它就好。

?其實就一個 ?foreach 循環的底層方法。 封裝后就是foreach ?遍歷集合

?

public interface IEumerator{object Current{ get; }bool MoveNext();void Reset(); }public interface IEnumerable{IEumerator GetEnumerator();}

?

轉載于:https://www.cnblogs.com/dragon-L/p/3791151.html

總結

以上是生活随笔為你收集整理的迭代器(Iterator)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。