c# – 为什么只有ForEach方法的列表

从我可以看到,ForEach方法仅适用于列表 class.

这是为什么?我可以看到没有任何理由ForEach不可用于实现IEnumerable / IEnumerator接口的任何类,如果您需要执行一个小动作(1行比1行2样板Foreach语法更可读),这是一个非常有用的方法. ..).

更新:我会澄清我的问题.包含ForEach的序列有完全有效的原因.没有包括所有序列的完美的理由.

但是我不明白为什么ForEach只能包含在一些序列中.

解决方法

见Eric Lippert的帖子: “foreach” vs “ForEach”

A number of people have asked me why
there is no Microsoft-provided
“ForEach” sequence operator extension
method. The List class has such a
method already of course,but there’s
no reason why such a method Could not
be created as an extension method for
all sequences.

But we can go a bit deeper here. I am
philosophically opposed to providing
such a method,for two reasons.

The first reason is that doing so
violates the functional programming
principles that all the other sequence
operators are based upon. Clearly the
sole purpose of a call to this method
is to cause side effects.

The second reason is that doing so
adds zero new representational power
to the language.

Well,the VS Languages team does not have any influence on what goes into List. I personally find the “ForEach” method on List philosophically troubling for all the same reasons that I would find an extension method on IEnumerable troubling. (And the VSL team does control that.) The one mitigating factor is that List is clearly designed to be a mutable,not-side-effect-free data structure,so using expressions that mutate it seems slightly less bad. — Eric

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...