为什么在IEnumerable上没有ForEach扩展方法?受另一个问题的启发,询问失踪的人Zip职能:为什么没有ForEach中的可拓方法Enumerable班级,等级?或者任何地方?唯一一个获得ForEach方法是List<>..有什么原因导致它的缺失(表现)吗?
3 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
list.ForEach( item =>{ item.DoSomething();} );
foreach(Item item in list){ item.DoSomething();}
类型检查:Foreach是在运行时完成的,ForEach()是在编译时完成的(Big Plus!) 调用委托的语法确实要简单得多:objects.ForEach(DoSomething); ForEach()可以链接起来:尽管这样一个特性的邪恶/有用性是可以讨论的。
有只小跳蛙
TA贡献1824条经验 获得超8个赞
// Possibly call this "Do"IEnumerable<T> Apply<T> (this IEnumerable<T> source, Action<T> action){ foreach (var e in source) { action(e); yield return e; }}
行家
MySequence .Apply(...) .Apply(...) .Apply(...);
反方
.ForEach()
.ToList()
// possibly call this "Realize"IEnumerable<T> Done<T> (this IEnumerable<T> source){ foreach (var e in source) { // do nothing ; } return source;}
- 3 回答
- 0 关注
- 461 浏览
添加回答
举报
0/150
提交
取消