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

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

在运行速度更快的C#/VB.NET/.NET中,forforeach?

自从我读到for循环的工作速度比foreach环a很久以前我认为它适用于所有集合、泛型集合、所有数组等。

我搜索了谷歌,发现了一些文章,但大多数都是不确定的(阅读文章的评论)和开放式的文章。

理想的做法是列出每个场景,并为其提供最佳解决方案。

例如(仅仅是它应该如何的一个例子):

  1. 用于迭代1000多个字符串的数组-

    for

    foreach

  2. 用于迭代

    IList

    (非属)字符串-

    foreach

    for

在网上也可以找到一些相同的参考资料:

  1. 伊曼纽尔·尚泽尔的原创古旧文章

  2. CodeProject FOREACH VS.为

  3. 博客-toforeach还是不去foreach,这就是问题所在

  4. ASP.NET论坛-NET1.1 C#forVSforeach


[编辑]

除了可读性方面,我真的对事实和数字感兴趣。在某些应用程序中,性能优化的最后一英里确实很重要。


杨__羊羊
浏览 1062回答 3
3回答

繁花如伊

帕特里克·斯马奇亚在博客上写到上个月,有以下结论:对于列表上的循环,比列表中的foreach循环要便宜2倍多。数组上的循环比列表上的循环要便宜大约2倍。因此,使用for对数组进行循环比使用foreach在列表上循环要便宜5倍(我相信,我们都是这样做的)。

哈士奇WWW

foreach循环比for环.使用foreach循环向使用您的代码的任何人演示,您计划对集合的每个成员做一些事情,而不管它在集合中的位置如何。它还显示您没有修改原始集合(如果尝试,则抛出异常)。另一个优势是foreach它适用于任何IEnumerable,在哪里for只对IList,其中每个元素实际上都有一个索引。但是,如果您需要使用元素的索引,那么当然应该允许您使用for循环。但是,如果您不需要使用索引,那么使用索引就会使代码变得杂乱无章。据我所知,没有明显的性能影响。在将来的某个阶段,使用foreach在多个核上运行,但现在不需要担心。
打开App,查看更多内容
随时随地看视频慕课网APP