受另一个关于缺少Zip
函数的问题启发:
为什么IEnumerable
接口上没有ForEach
扩展方法,或者其他地方也没有呢?唯一拥有ForEach
方法的类是List<>
。是否有某些原因导致它缺失,比如性能问题?
受另一个关于缺少Zip
函数的问题启发:
为什么IEnumerable
接口上没有ForEach
扩展方法,或者其他地方也没有呢?唯一拥有ForEach
方法的类是List<>
。是否有某些原因导致它缺失,比如性能问题?
目前还没有人指出,ForEach<T>会在编译时进行类型检查,而foreach关键字则是在运行时检查。
在代码中使用了两种方法进行重构后,我更喜欢使用.ForEach,因为我必须寻找测试失败/运行时失败来找到foreach问题。
foreach
有什么较少的编译时检查。当然,如果您的集合是非泛型的IEnumerable,则循环变量将是一个“object”,但对于假设的ForEach扩展方法也是如此。 - Richard Poole
Parallel.ForEach
换成Enumerable.ForEach
,只发现后者根本不存在。在这里,C#错过了一个让事情变得容易的技巧。 - Colonel Panic