如何循环支持IEnumerable的集合?

问题描述 投票:73回答:4

如何循环支持IEnumerable的集合?

c# for-loop foreach ienumerable
4个回答
125
投票

每个人都会定期做:

foreach (var item in collection)
{
    // do your stuff   
}

82
投票

除了已经建议的使用foreach循环的方法之外,我想我还要提到任何实现IEnumerable的对象也通过IEnumerator方法提供了GetEnumerator接口。虽然这种方法通常不是必需的,但是这可以用于手动迭代集合,在为集合编写自己的扩展方法时特别有用。

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

一个主要的例子是当你想要同时迭代两个序列时,这对于foreach循环是不可能的。


42
投票

甚至是一种非常经典的旧时尚方法

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   
}

也许你也想这种方法:-)


7
投票
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{

}
© www.soinside.com 2019 - 2024. All rights reserved.