web-dev-qa-db-ja.com

IEnumerableをサポートするコレクションをループする方法は?

IEnumerableをサポートするコレクションをループする方法は?

75
mrblah

それぞれのレギュラーが行います:

foreach (var item in collection)
{
    // do your stuff   
}
127
Fredrik Mörk

既に提案されているforeachループの使用方法に加えて、IEnumerableを実装するオブジェクトは、IEnumeratorメソッドを介してGetEnumeratorインターフェイスも提供することにも言及すると思います。通常、このメソッドは必要ありませんが、これはコレクションを手動で反復処理するために使用でき、コレクション用の独自の拡張メソッドを作成するときに特に役立ちます。

IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
    while (sequenceEnum.MoveNext())
    {
        // Do something with sequenceEnum.Current.
    }
}

主要な例は、2つのシーケンスを同時にで繰り返したい場合です。これは、foreachループでは不可能です。

83
Noldorin

または非常に古典的な昔ながらの方法

IEnumerable<string> collection = new List<string>() { "a", "b", "c" };

for(int i = 0; i < collection.Count(); i++) 
{
    string str1 = collection.ElementAt(i);
    // do your stuff   
}

たぶん、あなたもこの方法が必要です:-)

43
Alexa Adrian
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{

}
7
Darin Dimitrov