標籤:
迴圈語句為苦逼的程式猿們提供了很大的便利,有while、do...while、for和 foreach。而且foreach語句很簡潔,但是它的優點不僅僅在於此,它的效率也是最高的。
作為兩個開發語言,用法當然有所不同。下面就分別說下各自的用法。
C# foreach用法:
foreach(type objName in collection/Array)
這段語句會逐一檢查數組中的所儲存的變數值,並且一一將其取出,其中的type是你所要讀取的數組對象將要儲存在objName變數的資料類型,而objName是定義了一個type類型的變數名,代表每一次從集合和數組(collection/Array)中取得的元素,collection/Array則是所要存取的數組對象。用這種方法只需寫一個foreach就可以遍曆出除交錯數組以外的所有維數的數組。
註:objName的資料類型type必須與collection/Array對象的類型相同或比它大。
下面我用foreach迴圈一次性遍曆a數組:
int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定義一個2行2列2縱深的3維數組a foreach(int i in a){ Console .WriteLine (i); }
輸出結果就是1 2 3 4 5 6 7 8。
下面是遍曆一個集合:
List<string> names = new List<string>();//執行個體化一個集合names.Add("張三");names.Add("李四");names.Add("王五");foreach (string name in names){ Console.WriteLine("{0}", name);}
輸出結果就是 張三 李四 王五。
Java foreach用法:
for(type variableName : array|connection){ //variable自動迭代訪問每一個元素}
這段語句跟C# 的foreach文法大致相同,只不過“in”變成了“:”,這裡就不多做解釋了。用法大致與C#相同,不同的是對於多維陣列的遍曆,下面看用法。
遍曆集合:
//建立List並添加元素List<String> list = new ArrayList<String>();list.add("1");list.add("3");list.add("4");//利用froeach語句輸出集合元素for (String x : list) { System.out.println(x);}
輸出結果就不說了
遍曆數組:
一維數組:
//定義並初始化一個數組 int arr[] = {2, 3, 1};
//利用foreach語句輸出數組元素for (int x : arr) { System.out.println(x); //逐個輸出數組元素的值 }
二維數組:
//定義並初始化一個數組 int arr2[][] = {{4, 3}, {1, 2}}; //利用foreach語句輸出數組元素for (int x[] : arr2) { for (int e : x) { System.out.println(e); //逐個輸出數組元素的值 } }
三維數組:
//定義並初始化一個數組int arr[][][] = { {{1, 2}, {3, 4}}, {{5, 6}, {7, 8}} }; //利用foreach語句輸出數組元素for (int[][] a2 : arr) { for (int[] a1 : a2) { for (int x : a1) { System.out.println(x); //逐個輸出數組元素的值 } } }
若是n維數組,依次類推。
注意:通過上面的例子可以發現,foreach僅僅老老實實地遍曆數組或者集合一遍,如果要引用數組或者集合的索引,則foreach語句無法做到。所以不適合用於增加刪除和使用下標等複雜的操作。foreach語句是for語句特殊情況下的增強版本,簡化了編程,提高了代碼的可讀性和安全性(不用怕數組越界)。相對老的for語句來說是個很好的補充。提倡能用foreach的地方就不要再用for了。在用到對集合或者數組索引的情況下,foreach顯得力不從心,這個時候是用for語句的時候了。foreach一般結合泛型使用
C# 和Java的foreach的不同用法