2012年6月15日 星期五

使用 foreach 存取集合類別

若要使用 foreach 陳述式逐一查看集合,則集合必須符合下列需求︰

  • 它必須是介面、類別或結構。
  • 它必須包括可傳回型別的公用 GetEnumerator 方法。
  • 傳回型別包含名為 Current 的公用屬性和名為 MoveNext 的公用方法。

其他詳細資訊,請參閱 HOW TO:使用 foreach 存取集合類別 (C# 程式設計手冊)

要自訂一個集合類別,除了直接實作 IEnumerableIEnumerator 介面外, 另外,只要該類別具有必要的 GetEnumeratorMoveNextResetCurrent 成員,就可以搭配 foreach 使用。

public interface IEnumerable
{
    IEnumerator GetEnumerator();//傳回會逐一查看集合的列舉程式。
}

public interface IEnumerator
{
    // 方法
    bool MoveNext();//將列舉值往前推至下集合中的下一個項目。如果成功則返回為 true;如果超過集合結尾,則返回false。
    void Reset();//設定列舉值至它的初始位置,這是在集合中第一個元素之前。

    // 屬性
    object Current { get; }//取得集合中目前的項目。
}

沒有留言:

張貼留言