看个例子,就可以看出原因
执行结果如下
进入For循环
添加一次函数
0
添加一次函数
1
添加一次函数
进入Foreach循环
添加一次函数
1
2
结束
要熄灯了,虽然程序小有问题,但基本能看出for一共执行了三次函数list而foreach只执行了必要的一次,由此可见,foreach效率比for要高上许多
public static void Main(string[] args)
{
Console.WriteLine("进入For循环");
for(int i=0;i<List().Count;i++){
Console.WriteLine(i.ToString());
}
Console.WriteLine("进入Foreach循环");
foreach(int i in List()){
Console.WriteLine(i.ToString());
}
Console.WriteLine("结束");
Console.ReadKey(true);
}
static List<int> List(){
List<int> l = new List<int>();
l.Add(1);
l.Add(2);
Console.WriteLine("添加一次函数");
return l;
}
{
Console.WriteLine("进入For循环");
for(int i=0;i<List().Count;i++){
Console.WriteLine(i.ToString());
}
Console.WriteLine("进入Foreach循环");
foreach(int i in List()){
Console.WriteLine(i.ToString());
}
Console.WriteLine("结束");
Console.ReadKey(true);
}
static List<int> List(){
List<int> l = new List<int>();
l.Add(1);
l.Add(2);
Console.WriteLine("添加一次函数");
return l;
}
执行结果如下
进入For循环
添加一次函数
0
添加一次函数
1
添加一次函数
进入Foreach循环
添加一次函数
1
2
结束
要熄灯了,虽然程序小有问题,但基本能看出for一共执行了三次函数list而foreach只执行了必要的一次,由此可见,foreach效率比for要高上许多