【发布时间】:2017-05-18 12:04:03
【问题描述】:
public static IEnumerable<T> ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach (var element in source) action(element);
return source;
}
上面的代码给了我一个警告,说源代码可能会被迭代多次,但真的是这样吗?在foreach语句中迭代了一次,但是return语句如何让它再次迭代呢?
【问题讨论】:
-
从某种意义上说,因为你将它返回给调用者,调用者可以用
IEnumerable做什么?只能再列举一遍。就像myList.ForEach(c => DoStuff(c)).ToArray() -
是否可以在可枚举的元素上延迟执行?
标签: c# linq ienumerable