【发布时间】:2023-03-09 15:48:01
【问题描述】:
如何遍历支持 IEnumerable 的集合?
【问题讨论】:
标签: c# for-loop foreach ienumerable
如何遍历支持 IEnumerable 的集合?
【问题讨论】:
标签: c# for-loop foreach 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 循环是不可能的。
【讨论】:
甚至是非常经典的老式方法
using System.Collections.Generic;
using System.Linq;
...
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)
{
}
【讨论】:
使用扩展:
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); } }
}
}
【讨论】: