C# 编译器不会针对每个进行优化吗?

本文关键字:优化 编译器 | 更新日期: 2023-09-27 18:35:20

我已经读了很多次,因为每个数组的执行效率比数组低一些(因为它需要构造函数/使用迭代器),人们提倡使用 for 循环代替。

我对编译器没有优化它(又名:将其转换为简单的 for 循环 IL 代码代码)感到有点惊讶。Visual Studio 2015 编译器为我们做了这么多(C# 6 语言功能),为什么不修复这种"不太知名"的 foreach 错误用法呢?

C# 编译器不会针对每个进行优化吗?

声称foreach在数组上的表现比for差是不正确的。Jon Skeet对两者进行了性能比较:

  • 在 .NET 中,哪个循环运行得更快,"for"还是"foreach"? - 乔恩的回答
并得出结论,对于数组,"

编译器发出大致相同的代码",并且对于他的基准测试,"结果基本相同"。