C#:对于foreach的经文

时间:2011-07-13 18:21:20

标签: c# .net

  

可能重复:
  For vs Foreach loop in C#

一个人比另一个好吗?

似乎我听说for循环的开销低于foreach,但我还没有看到证据。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

今天的编译器比.net 1的编译器好很多。

虽然对于更优化,但是数组上的foreach实际上是在IL中转换为for。 对泛型集合的Foreach进行了优化,因为它返回了一个通用的ienumerator,而linq也有一些neato优化。

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

答案 2 :(得分:2)

一个比另一个“更好”取决于您的应用程序。你只是在阅读数据结构吗?你在写一个数据结构吗?你甚至没有使用任何类型的数据结构,只是做一些数学运算?

他们每个人都有自己的用途。每个循环通常用于从数据结构(数组,链表等)中读取内容。例如。

foreach(myClass i in myList)
{
    int x = i.getX();
    console.writeline(x);
}

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

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