欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

C#中迭代器模式的示例分析-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“C#中迭代器模式的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C#中迭代器模式的示例分析”這篇文章吧。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)海西免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

什么是迭代器模式?

迭代器模式(Iterator):提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內部表示。

何時使用迭代器模式?

當需要訪問一個聚合對象,而且不管這些對象是什么都需要遍歷的時候,需要考慮使用迭代器模式。

迭代器模式的組成

Iterator:迭代器抽象類,用于定義得到開始對象,對到下一個對象,判斷是否到結尾,當前對象等抽象方法,統(tǒng)一接口。

ConcreteAggregate:保存聚合對象。

ConcreteIterator:繼承于Iterator,實現(xiàn)具體如何對聚合對象的操作。

迭代器模式具體實現(xiàn)

迭代器模式的結構

  C#中迭代器模式的示例分析

迭代器模式的實現(xiàn):

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;
 //將現(xiàn)在的數(shù)據(jù)組傳輸進來
 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;
 //傳輸數(shù)據(jù)進來
 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類:

/// <summary>
/// 創(chuàng)建迭代器
/// 在這里看并沒有什么具體的用處
/// </summary>
abstract class Aggregate
{
 public abstract Iterator CreateIterator();
}
/// <summary>
/// 作用是保存數(shù)據(jù),保存的數(shù)據(jù)是一系列數(shù)據(jù),所以用數(shù)組
/// 然后傳輸數(shù)據(jù)給ConcreteIterator
/// </summary>
class ConcreteAggregate : Aggregate
{
 //用于存放聚合對象
 private IList<object> items = new List<object>();
 public override Iterator CreateIterator()
 {
 return new ConcreteIterator(this);
 }
 //數(shù)組的長度,也就是ConcreteAggregate的屬性
 public int Count { get { return items.Count; } }
 /// ConcreteAggregate現(xiàn)在是數(shù)組形式
 /// get獲取當前的數(shù)據(jù)
 /// set將新來的數(shù)據(jù)插入到ConcreteAggregate中
 public object this[int index]
 {
 get { return items[index]; }
 set { items.Insert(index, value); }
 }
}

主函數(shù)調用:

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的迭代器實現(xiàn)

迭代器模式在我們現(xiàn)在的使用中其實沒有那么麻煩,因為.NET框架已經(jīng)準備好了相關的接口,只需要實現(xiàn)就好了。

static void Main(string[] args)
{
 IList<string> a = new List<string>();
 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<string> e = a.GetEnumerator();
 while (e.MoveNext())
 {
 Console.WriteLine("{0} buy ticket,please", e.Current);
 }
 Console.Read();
}

補充:IEnumerator

C#中迭代器模式的示例分析

備注:文中所有代碼及知識點均來自于《大話設計模式》,本人屬于邊學邊看邊敲代碼邊總結的階段。

以上是“C#中迭代器模式的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)成都網(wǎng)站制作公司行業(yè)資訊頻道!

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站標題:C#中迭代器模式的示例分析-創(chuàng)新互聯(lián)
瀏覽地址:http://aaarwkj.com/article20/dgocco.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設、域名注冊、小程序開發(fā)軟件開發(fā)、手機網(wǎng)站建設ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
av中文字幕国产精品| 亚洲午夜天堂精品福利天堂| 青青草网站在线观看视频| 国产一区日本二区欧美三区| 深夜毛片一区二区三区| 亚洲欧美日韩颜射极品| 免费人成在线观看网站免费观看| 91精品一区二区三区91人妻| 强暴美女视频大全久久久| 日韩精品高清中文字幕| 午夜激情视频福利在线观看| 亚洲精品中文字幕日本乱码| 中文字幕日韩欧美资源站| 国产亚洲欧美精品久久久久久| 国内精品av在线观看| av日韩在线一区二区三区| 毛片91成人在线播放| 亚洲国产精品一区二区三区在线 | 97色伦97色伦国产在线| 人妇乱系列中文字幕人妻| 日本东京热免一区二区| 青青草原成年人免费看| 91九色国产原创在线观看| 视频一区二区视频三区 | 人妻av一区二区三区| 人妻猛烈进入中文字幕| 色花堂国产精品第二页| 国产国语激情对白在线| 国产成人精品久久久亚洲| 国产一区二区精品久久久女同| 欧美精品国产精品久久| 麻豆国产97在线精品一区| 亚洲av毛片免费在线观看| 十八禁真人无摭挡观看| 欧美一区二区三区久久妇| 成人性生交免大片免费| 亚洲欧美日韩精品在线观看| 欧美一区二区三区东京热| 亚洲av日韩av在线不卡一区| 99久久精品费精品国产风间由美| 视频久久这里只有精品|