使用迭代器

2021-04-24 04:02:18 字數 1526 閱讀 1640

建立迭代器最常用的方法是對 ienumerable 介面實現 getenumerator 方法,例如:

c#

複製**

public system.collections.ienumerator getenumerator()

}

getenumerator 方法的存在使得型別成為可列舉的型別,並允許使用 foreach

語句。如果上面的方法是 listclass 的類定義的一部分,則可以對該類使用foreach,如下所示:

c#

複製**

static

void main()

}

foreach語句呼叫 listclass.getenumerator() 並使用返回的列舉數來迴圈訪問值。有關如何建立返回 ienumerator

介面的泛型迭代器的示例,請參見如何:為泛型列表建立迭代器塊(c# 程式設計指南)

。還可以使用命名的迭代器以支援通過不同的方式迴圈訪問同一資料集合。例如,您可以提供乙個按公升序返回元素的迭代器,而提供按降序返回元素的另乙個迭代器。迭代器還可以帶有引數,以便允許客戶端控制全部或部分迭代行為。下面的迭代器使用命名的迭代器 sampleiterator 實現 ienumerable 介面:

c#

複製**

// implementing the enumerable pattern

public system.collections.ienumerable sampleiterator(int start, int end)

}

命名的迭代器的呼叫方法如下:

c#

複製**

listclass test = new listclass();

foreach (int n in test.sampleiterator(1, 10))

可以在同乙個迭代器中使用多個 yield

語句,如下面的示例所示:

c#

複製**

public system.collections.ienumerator getenumerator()

然後可以使用下面的foreach語句輸出結果:

c#

複製**

foreach (string element in

new testclass())

此示例顯示以下文字:

with an iterator, more than one value can be returned.

foreach迴圈的每次後續迭代(或對 ienumerator.movenext 的直接呼叫)中,下乙個迭代器**體將從前乙個yield語句之後開始,並繼續下乙個語句直至到達迭代器體的結尾或遇到yield break語句。

請參見

如何使用迭代器迭代集合

iterator 迭代器是乙個專門用來遍歷集合使用的類,迭代器需要通過 集合物件.iterator 方法獲得。迭代器物件使用 hashnext 方法 檢視是否還有可以迭代的元素,使用next 方法返回迭代器中的物件。迭代器返回的物件預設都是object型別。set集合的遍歷 1.通過set集合呼叫i...

使用迭代器程式設計

輸入迭代器 輸入迭代器是最普通的型別。輸入迭代器至少能夠使用 和!測試是否相等 使用 來訪問資料 使用 操作來遞推迭代器到下乙個元素或到達past the end值 為了理解迭代器和stl函式是如何使用它們的,現在來看一下find 模版函式的定義 template inputiterator fin...

迭代器的使用

先看下面的例子 vector 的元素刪除 話頭從 container 的元素刪除說起。jyhuang 觀察到 如果 vector 或 list 的最後乙個元素符合刪除條件,程式會有問題 他給我這樣乙個片段 template void print elements t elem void pfi in...