首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

嘿嘿!奇怪了for比foreach快?解决方法

2012-01-19 
嘿嘿!!奇怪了for比foreach快?????using Systemusing System.Diagnosticsclass Test{static void Main(){

嘿嘿!!奇怪了for比foreach快?????
using System;
using System.Diagnostics;
class Test
{
  static void Main()
  {
  int[] lists = Method();
  Stopwatch stop = new Stopwatch();
  stop.Start();
  for (int i = 0; i < lists.Length; i++)
  {

  }
  Console.WriteLine(stop.ElapsedMilliseconds);
  stop.Reset();
  stop.Start();
  foreach (int a in lists)
  {

  }
  Console.WriteLine(stop.ElapsedMilliseconds);
  Console.ReadKey();
  }
  static int[] Method()
  {
  int[] ints = new int[10000000];
  for (int i = 0; i < 10000000; i++)
  {
  ints[i] = i + 1;
  }
  return ints;
  }
}

33
62



[解决办法]
奇怪吗?
[解决办法]
foreach需要调用IEnumerator,IEnumerable接口

[解决办法]
.
[解决办法]
有老帖讨论过
[解决办法]
是的.
[解决办法]
...
ArrayList list=new ArrayList();
list.Add(1);
list.Add("a");
list.Add("vb");

foreach(strig c in list)
{
c=c.SubString(1);
}

for(int i=0;i<list.count;i++)
{
object o=list[i];
if(object.GetType()==typeof(string))
{
string c=(string)o;
c=c.SubString(1); 
}
}
[解决办法]
Effective C#上有专门介绍for和foreach的区别的
[解决办法]
我个人比较偏向于foreach
虽然有的时候for比foreach快
但是大多数foreach效率都要好些
而且foreach的代码更加简练

看看这个吧

http://www.cnblogs.com/WuCountry/archive/2007/02/27/658710.html
[解决办法]
我昏迷……for里面是个空的,有啥可比性?

就是吧i自增到lists.Length而已,说不定还被编译器优化了……

热点排行