展示迭代器遍歷集合,支援自訂步長:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using I = Pattern.Iterator;
public partial class Iterator : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
I.Collection collection = new I.Collection();
collection[0] = new I.MessageModel("第1條信息", DateTime.Now);
collection[1] = new I.MessageModel("第2條信息", DateTime.Now);
collection[2] = new I.MessageModel("第3條信息", DateTime.Now);
collection[3] = new I.MessageModel("第4條信息", DateTime.Now);
collection[4] = new I.MessageModel("第5條信息", DateTime.Now);
collection[5] = new I.MessageModel("第6條信息", DateTime.Now);
collection[6] = new I.MessageModel("第7條信息", DateTime.Now);
collection[7] = new I.MessageModel("第8條信息", DateTime.Now);
collection[8] = new I.MessageModel("第9條信息", DateTime.Now);
I.Iterator iterator = new I.Iterator(collection);
iterator.Step = 2;
for (I.MessageModel mm = iterator.First(); !iterator.IsDone; mm = iterator.Next())
{
Response.Write(mm.Message);
Response.Write("<br />");
}
}
}
第1條信息
第3條信息
第5條信息
第7條信息
第9條信息
iterator.Step = 2 使遍歷間隔 2 個元素。First() 重置游標 → 條件 !IsDone → Next() 移動游標 → 取得元素。collection[_current] 存取元素。| 優勢 | 說明 |
|---|---|
| 封裝遍歷邏輯 | 客戶端無需知曉集合內部結構(陣列/鏈表/樹)。 |
| 多種遍歷方式 | 可建立不同迭代器(正向/反向/步長/過濾)。 |
| 統一介面 | 所有集合透過 IIterator 介面遍歷,支援多態。 |
| 同時遍歷:多個迭代器可同時遍歷同一集合,互不干擾。 |