加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 17:38:38 所属栏目:百科 来源:网络整理
导读:从我可以看到,ForEach方法仅适用于列表 class. 这是为什么?我可以看到没有任何理由ForEach不可用于实现IEnumerable / IEnumerator接口的任何类,如果您需要执行一个小动作(1行比1行2样板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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读