如何循环访问支持IEnumerable的集合?
如何循环访问支持IEnumerable的集合?
每个经常会做:
foreach (var item in collection) { // do your stuff }
除了已经提到的使用foreach
循环的方法外,我还想提到任何实现了IEnumerable
对象也都通过GetEnumerator
方法提供了一个IEnumerator
接口。 虽然这个方法通常不是必须的,但是这可以用于手动迭代集合,而且在为集合编写自己的扩展方法时特别有用。
IEnumerable<T> mySequence; using (var sequenceEnum = mySequence.GetEnumerator()) { while (sequenceEnum.MoveNext()) { // Do something with sequenceEnum.Current. } }
一个主要的例子就是当你想同时迭代两个序列时 , foreach
循环是不可能的。
甚至是一个非常古典的时尚方法
for(int i = 0; i < collection.Count(); i++) { string str1 = collection.ElementAt(i); // do your stuff }
也许你会喜欢这种方法:-)
foreach (var element in instanceOfAClassThatImplelemntIEnumerable) { }