天天看點

一個疑問

摘自: more effective c#

9. 對數組跟集合使用foreach

循環數組或集合有三種方式:

int[] foo = new int[100];           

第一種:

  1. foreach(int i in foo)
  2. {
  3. // do somethings.
  4. }

第二種:

  1. for (int index = 0; index < foo.Length; index++)

第三種:

  1. int len = foo.Length;
  2. for (int index = 0; index < len; index++)

對于C或C++,第三種循環效率最佳。但是在C#中是最差的,因為在通路每一個實際的集合時,運作時確定對每個集合的邊界做檢測。而将集合的大小指派給一個變量,這使得每次進行for循環第二個條件參數總需要對邊界進行兩次檢測。并使得JIT編譯器在生成代碼的時候做了更多的事情。??????????????????