【发布时间】:2013-12-10 12:27:26
【问题描述】:
Microsoft 文档:“代码审查:.NET 应用程序性能” (http://msdn.microsoft.com/en-us/library/ff647802.aspx) 建议使用“for”循环而不是 foreach 循环来提高性能。
你使用 foreach 吗?
使用 foreach 可能会因为方式而导致额外的开销 枚举在 .NET Framework 集合中实现。 。网 Framework 1.1 集合为 foreach 提供了一个枚举器 通过覆盖 IEnumerable.GetEnumerator 来使用的语句。
...
考虑使用 for 循环而不是 foreach 来提高迭代 .NET Framework 集合的性能用整数索引。
每次用户在循环中单击网格中的一行时,我的应用程序都会进行昂贵的调用。 从浮点值转换为将在监视器中可视化的颜色大约需要 200 万次迭代。
我不确定使用 for 循环代替 foreach 循环,因为 Resharper 在每个可以转换为 foreach 循环的 for 循环中都会发出警告。
1.为什么 Resharper 推荐 foreach 而不是 for Loop?
2、使用for循环安全吗?
【问题讨论】:
-
1) 因为它更 generic (它几乎适用于任何集合,而不仅仅是集合)但是否使用它(因为性能)它是你所拥有的自己决定(resharper 不可能那么聪明地知道您的收藏有多少项目,它被调用的频率以及它是否对性能至关重要)。 2) 是的,它非常安全(但与少数类型的集合和数组相关联)。
-
我认为编译器无论如何都会在某些情况下将 foreach 转换为 for,例如如果它在编译时知道被 foreach 处理的是一个数组。跨度>
-
"Resharper 发出警告" - 它实际上是一个警告吗?或者它实际上是一个上下文操作(ReSharper 说它可以为你做,如果你愿意)?
标签: c# loops collections foreach resharper