如何遍历支持IEnumerable的集合?
Answers:
每个人都会有一个常规:
foreach (var item in collection)
{
// do your stuff
}
除了已经提出的使用foreach
循环的方法外,我想我还要提到的是,实现的任何对象IEnumerable
还可以IEnumerator
通过该GetEnumerator
方法提供接口。尽管通常不需要此方法,但可以将其用于手动迭代集合,并且在编写自己的集合扩展方法时特别有用。
IEnumerable<T> mySequence;
using (var sequenceEnum = mySequence.GetEnumerator())
{
while (sequenceEnum.MoveNext())
{
// Do something with sequenceEnum.Current.
}
}
一个主要的例子是当您想同时迭代两个序列时,这是不可能的foreach
。
甚至是非常经典的旧时尚方法
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
}
也许您也想要这种方法:-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{
}