看个例子,就可以看出原因
执行结果如下
进入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要高上许多