public class ArrayAccess
{
    public ArraryAccess(Object[] Strings) 
    {
      for (int i=0;i<Strings.Length-1;i++)
         {
             Debug.writeline(Strings[i].ToString());
         }
    }
}public class ArrayAccess
{
    public ArraryAccess(Object[] Strings) 
    {
      foreach( Object aa in Strings)
         {
             Debug.writeline(aa.ToString());
         }
    }
}
这两种方法,性能有差别吗?

解决方案 »

  1.   

    也不一定。foreach不一定总是会效率高的,主要看Enumerator的实现。
      

  2.   

    foreach的快,少了计算,少了查询数组索引.
      

  3.   

    不认为foreach会快。C#规范写的,foreach会调用方法。而调用方法效率将会大大降低,不如数组来得快。&#8226; 如果 collection 表达式的类型实现了集合模式(如上面定义的那样),则 foreach 语句的扩展是:
    E enumerator = (collection).GetEnumerator();
    try {
       ElementType element;
    while (enumerator.MoveNext()) {
    element = (ElementType)enumerator.Current;
    statement;
    }
    }
    finally {
    IDisposable disposable = enumerator as System.IDisposable;
    if (disposable != null) disposable.Dispose();
    }
      

  4.   

    我也觉得foreach这语句效率会差一些,还是直接计算的快
      

  5.   

    不要使用object,使用范型。对于Foreach,应该使用Array.Foreach方法。
      

  6.   

    foreach 比较慢一点
    本质上foreach还是还是要实现很多循环的 并且还要转换当然和C#编译器有关  C#会在这方面优化很多地方
    比如:
     for (int i=0;i<Strings.Length-1;i++)编译的IL 就不会这样了
    而大概的意思是
    int t=Strings.Length-1;
    for (int i=0;i<t;i++)
    因为不用每次循环都计算Length