如何循环支持IEnumerable的集合?

时间:2009-10-07 16:47:32

标签: c# for-loop foreach ienumerable

如何循环支持IEnumerable的集合?

6 个答案:

答案 0 :(得分:123)

每个人的常规做法:

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

答案 1 :(得分:80)

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

GetEnumerator

一个主要的例子是你想同时迭代两个序列,这对于IEnumerable<T> mySequence; using (var sequenceEnum = mySequence.GetEnumerator()) { while (sequenceEnum.MoveNext()) { // Do something with sequenceEnum.Current. } } 循环是不可能的。

答案 2 :(得分:38)

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

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   
}

也许你也想要这个方法: - )

答案 3 :(得分:7)

foreach (var element in instanceOfAClassThatImplelemntIEnumerable)
{

}

答案 4 :(得分:0)

也许您忘记了等待,然后退回收藏集

答案 5 :(得分:-1)

使用扩展:

namespace MyCompany.Extensions
{
    public static class LinqExtensions
    {
        public static void ForEach<TSource>(this IEnumerable<TSource> source, Action<TSource> actor) { foreach (var x in source) { actor(x); } }
    }
}