首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C# foreach vs functional each

C# foreach vs functional each
EN

Stack Overflow用户
提问于 2010-01-08 06:55:25
回答 5查看 7.5K关注 0票数 19

你喜欢这些中的哪一个?

代码语言:javascript
复制
foreach(var zombie in zombies)
{
    zombie.ShuffleTowardsSurvivors();
    zombie.EatNearbyBrains();
}

代码语言:javascript
复制
zombies.Each(zombie => {
    zombie.ShuffleTowardsSurvivors();
    zombie.EatNearbyBrains();
});
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-08 07:21:33

第二种形式。

在我看来,你必须使用的语言结构和关键字越少越好。C#本身就有足够的外来crud。

一般来说,你需要输入的越少越好。说真的,你怎么会不想在这种情况下使用"var“呢?当然,如果明确是你唯一的目标,你仍然会使用匈牙利符号……您有一个IDE,当您将鼠标悬停在...时,它会为您提供类型信息。当然还有Ctrl+Q,如果你使用的是Resharper...

@T.E.D。委托调用的性能影响是次要考虑的。如果您确实要这样做,请运行dot trace,看看它是否不可接受。

@Reed Copsey: re非标准,如果开发人员不能弄清楚".Each“在做什么,那么你就有更多的问题了,哈。修改语言以使其更好是编程的一大乐趣。

票数 5
EN

Stack Overflow用户

发布于 2010-01-08 07:48:07

在这里,您正在做一些非常必要的事情,比如编写一条语句而不是一个表达式(因为假设Each方法不返回值)和变异状态(人们只能假定这些方法会返回值,因为它们看起来也不返回值),但是您试图通过将语句集合作为委托传递给“函数式编程”。这段代码与函数式编程的理想和习惯用法相去甚远,那么为什么要试图将其伪装成这样呢?

尽管我非常喜欢像C#这样的多范式语言,但我认为当在更高的层次上混合范式时(例如,以函数式或命令式编写的整个方法)而不是在单个语句或表达式中混合多种范式时,它们是最容易理解和维护的。

如果您正在编写命令式代码,请诚实对待并使用循环。这没什么好丢脸的。命令式代码本身并不是一件坏事。

票数 10
EN

Stack Overflow用户

发布于 2010-01-08 07:04:24

This question包含了一些有用的讨论,以及关于该主题的哲学方面的MSDN博客文章的链接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2024305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档