微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/csharp/96422.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐