答案 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;
}