IEnumerable

配列やリストなどのコレクションクラスは、foreachを使って、各要素を取り出すことができた・・・。
では、foreachで各要素を取り出せるようなコレクションクラスを作るにはどうしたらいいか・・・。
そのクラスにIEnumerableインターフェイスを実装すればいい・・・。

IEnumerable インターフェイス (System.Collections)

IEnumerableインターフェイスを実装したクラスは、GetEnumeratorメソッドを実装する必要がある・・・。
戻り値がIEnumeratorとなっているが、これはどうしよう・・・。

配列もコレクションの一つなのでIEnumerableを持っている・・・。
とりあえず、今回は、内部で配列を生成して、その配列オブジェクトのGetEnumeratorをそのまま返そう・・・。

TestCollection.csを追加して、

GetEnumeratorの中で、要素数5の配列を用意し、0から4をセットして、その配列arrayのGetEnumeratorでIEnumeratorを返す・・・。

MainClass.csは、

TestCollectionオブジェクトtestCollectionを生成して、foreachで中身を全部取り出して出力・・・。

value = 0
value = 1
value = 2
value = 3
value = 4
続行するには何かキーを押してください . . .

GetEnumerator内部で生成した配列の各値が、そのままforeachでtestCollectionの各要素の値として取り出され、出力された・・・。
なんか不思議な感じである・・・。

ひとまず、IEnumerableをこんな感じで実装すると、foreachで取り出せるのがわかる・・・。

Sample/dotnet/IEnumerable/IEnumerable/src/IEnumerable_ at master · bg1bgst333/Sample · GitHub