测试的办法是用这两种循环形式遍历已知的汇合数据,应用的计时器是 Stopwatch 类,最初会在两个相应的文本框中输入工夫耗费,先间接贴出后果画面:

测试各执行了十次,其中右边的文本框是 for 语句的后果,左边的是 foreach 语句的后果,能够看出 foreach 语句在这个程序当中效率更高,上面是测试的局部代码:

using System;using System.Diagnostics;using System.Collections.Generic;using System.Windows.Forms;private List<int> datas = new List<int>(100000000);for (int i = 0; i < 100000000; i++){    datas.Add(i);}// forprivate void normalFor(){    Stopwatch watch = new Stopwatch();    watch.Start();    int result = 0;    for (int i = 0; i < datas.Count; i++)    {        result += datas[i];    }    watch.Stop();    textBox1.Text += watch.ElapsedMilliseconds.ToString() + "ms\r\n";}// foreachprivate void forEach(){    Stopwatch watch = new Stopwatch();    watch.Start();    int result = 0;    foreach (int i in datas)    {        result += i;    }    watch.Stop();    textBox2.Text += watch.ElapsedMilliseconds.ToString() + "ms\r\n";}

这个程序中拿了较为极其的数据来作测试,最终也只是达到了不到 200 ms 的差距,实际上在应用环境中两者之间的性能差异基本上能够忽略不计,还是就思考开发者的应用习惯和上下文环境来进行抉择。

相干环境:
.NET Framework 4.5