C foreach迴圈較for迴圈的優勢與劣勢

2021-09-07 14:21:35 字數 2145 閱讀 3206

一、foreach迴圈的優勢

c#支援foreach關鍵字,foreach在處理集合和陣列相對於for存在以下幾個優勢:

1、foreach語句簡潔

2、效率比for要高(c#是強型別檢查,for迴圈對於陣列訪問的時候,要對索引的有效值進行檢查)

3、不用關心陣列的起始索引是幾(因為有很多開發者是從其他語言轉到c#的,有些語言的起始索引可能是1或者是0)

4、處理多維陣列(不包括鋸齒陣列)更加的方便,**如下:

int[,] nvisited =,

,};//

use "for" to loop two-dimension array(使用for迴圈二維陣列)

console.writeline("

user 'for' to loop two-dimension array");

for (int i = 0; i < nvisited.getlength(0); i++)

for (int j = 0; j < nvisited.getlength(1); j++)

console.write(nvisited[i, j]);

console.writeline();

//use "foreach" to loop two-dimension array(使用foreach迴圈二維陣列)

foreach只用一行**就將所有元素迴圈了出來,而for迴圈則就需要很多行**才可以.

注:foreach處理鋸齒陣列需進行兩次foreach迴圈

int nvisited = new

int[3

];nvisited[

0] = new

int[3] ;

nvisited[

1] = new

int[3] ;

nvisited[

2] = new

int[6] ;

//use "foreach" to loop two-dimension array(使用foreach迴圈二維陣列)

5、在型別轉換方面foreach不用顯示地進行型別轉換

int val = ;

arraylist list = new

arraylist();

list.addrange(val);

foreach (int item in list)//

在迴圈語句中指定當前正在迴圈的元素的型別,不需要進行拆箱轉換

console.writeline();

for (int i = 0; i < list.count; i++)

6、當集合元素如list等在使用foreach進行迴圈時,每迴圈完乙個元素,就會釋放對應的資源,**如下:

using (ienumeratorenumerator =collection.getenumerator())

}

二、foreach迴圈的劣勢

1、上面說了foreach迴圈的時候會釋放使用完的資源,所以會造成額外的gc開銷,所以使用的時候,請酌情考慮

2、foreach也稱為唯讀迴圈,所以再迴圈陣列/集合的時候,無法對陣列/集合進行修改。

3、陣列中的每一項必須與其他的項型別相等.

C foreach迴圈例項詳解

在編寫c 時,我們會發現使用foreach迴圈會比使用for迴圈方便,不需要進行資料型別的強制轉換,不需要使用下標 通過幫助文件的檢視可知,如果要對乙個物件使用foreach進行迴圈的話則此物件的型別必須擁有getenumerator方法,此方法是在ienumerable介面下的,但是否實現此介面無...

運用c foreach迴圈顯示

慣例 我是溫浩然 先說一下兩種的區別,上圖,改版之前。後來的效果是 很明顯的,後來的是分組織結構顯示的,這裡用到的技術,就是c標籤 先貼 foreach中巢狀if其中再巢狀foreach。後台傳到前台的是babystages這個list集合,在前台中,通過c foreach來進行迴圈解析,就會生出第...

c foreach遍歷迴圈List

在jsp中如何用jstl的c foreach遍歷元素是map型別的list?request中有個 admin.dealers 屬性,是個元素是map型別的list,其傎如下所示 在jsp中如何用jstl的c foreach遍歷所有的dealerid與dealername?解決方案 遍歷的物件實際上是...