关于.net:C#:对于foreach的经文

C#: for verses foreach

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
For vs Foreach loop in C#

一个比另一个好吗?

我好像听说一个for循环的开销比一个foreach循环的开销要小,但我还没有看到这方面的证据。


一个比另一个"更好"取决于您的应用程序。你只是在读数据结构吗?您正在写入数据结构吗?你甚至不使用任何类型的数据结构,只做一些数学计算吗?

它们各自有各自的用途。for-each循环通常用于从数据结构(数组、链接列表等)中读取内容。例如。

1
2
3
4
5
foreach(myClass i in myList)
{
    int x = i.getX();
    console.writeline(x);
}

其中for循环可以用于执行上述操作,以及更新数据结构条目等其他操作。

1
2
3
4
for (int i = 0; i < myList.count(); i++)
{
   myList[i].x += i * 80;
}


今天的编译器比.NET 1的编译器好多了。

虽然for更为优化,但实际上在IL中将数组上的foreach转换为for.forEach对泛型集合进行了优化,因为它返回泛型IEnumerator,而linq也对此进行了一些neato优化。

所以简短的答案是肯定的,但现实世界的答案是否定的。


如果不需要索引(在大多数应用程序中这是大多数时间),则使用foreach,否则使用for