首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 3.0 特性探秘 (二):手工實作迭代器模式完整代碼

     編輯:關於C語言

完整介面與類別定義


interface ICollection { int Count { get; } Iterator GetIterator(); }
interface Iterator { bool MoveNext(); object Current { get; } }

class List : ICollection
{
    const int MAX = 10;
    object[] items = new object[MAX];
    public object this[int i] { get => items[i]; set => items[i] = value; }
    public int Count => items.Length;
    public Iterator GetIterator() => new ListIterator(this);
}

class ListIterator : Iterator
{
    int index = 0; ICollection list;
    public ListIterator(ICollection list) { this.list = list; }
    public bool MoveNext() => ++index <= list.Count;
    public object Current => list[index];
}

測試程式


class Program
{
    static void Main()
    {
        ICollection list = new List();
        Iterator it = list.GetIterator();
        while (it.MoveNext()) { object current = it.Current; /* 處理 */ }
    }
}

此範例展示「介面隔離變化」核心思想:客戶代碼僅依賴 ICollection/Iterator,具體集合可自由替換。C# 2.0 起內建介面取代此手工模式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved