为了账号安全,请及时绑定邮箱和手机立即绑定

在.NET中,哪个循环运行得更快,“for”还是“foreach”?

在.NET中,哪个循环运行得更快,“for”还是“foreach”?

杨__羊羊 2019-06-24 10:30:39
在.NET中,哪个循环运行得更快,“for”还是“foreach”?在运行速度更快的C#/VB.NET/.NET中,for或foreach?自从我读到for循环的工作速度比foreach环a很久以前我认为它适用于所有集合、泛型集合、所有数组等。我搜索了谷歌,发现了一些文章,但大多数都是不确定的(阅读文章的评论)和开放式的文章。理想的做法是列出每个场景,并为其提供最佳解决方案。例如(仅仅是它应该如何的一个例子):用于迭代1000多个字符串的数组-for比foreach用于迭代IList(非属)字符串-foreach比for在网上也可以找到一些相同的参考资料:伊曼纽尔·尚泽尔的原创古旧文章CodeProject FOREACH VS.为博客-toforeach还是不去foreach,这就是问题所在ASP.NET论坛-NET1.1 C#forVSforeach[编辑]除了可读性方面,我真的对事实和数字感兴趣。在某些应用程序中,性能优化的最后一英里确实很重要。
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

帕特里克·斯马奇亚在博客上写到上个月,有以下结论:

  • 对于列表上的循环,比列表中的foreach循环要便宜2倍多。
  • 数组上的循环比列表上的循环要便宜大约2倍。
  • 因此,使用for对数组进行循环比使用foreach在列表上循环要便宜5倍(我相信,我们都是这样做的)。


查看完整回答
反对 回复 2019-06-24
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

foreach循环比for.

使用foreach循环向使用您的代码的任何人演示,您计划对集合的每个成员做一些事情,而不管它在集合中的位置如何。它还显示您没有修改原始集合(如果尝试,则抛出异常)。

另一个优势是foreach它适用于任何IEnumerable,在哪里for只对IList,其中每个元素实际上都有一个索引。

但是,如果您需要使用元素的索引,那么当然应该允许您使用for循环。但是,如果您不需要使用索引,那么使用索引就会使代码变得杂乱无章。

据我所知,没有明显的性能影响。在将来的某个阶段,使用foreach在多个核上运行,但现在不需要担心。


查看完整回答
反对 回复 2019-06-24
  • 3 回答
  • 0 关注
  • 1123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信