回覆列表
  • 1 # 老生談笑

    foreach迴圈用於列舉出集合中所有的元素,foreach語句中的表示式由關鍵字in隔開的兩個項組成。in右邊的項是集合名,in左邊的項是變數名,用來存放該集合中的每個元素。該迴圈的執行過程如下:每一次迴圈時,從集合中取出一個新的元素值。放到只讀變數中去,如果括號中的整個表示式返回值為true,foreach塊中的語句就能夠執行。一旦集合中的元素都已經被訪問到,整個表示式的值為false,控制流程就轉入到foreach塊後面的執行語句。foreach語句經常與陣列一起使用,下面例項將透過foreach語句讀取陣列的值並進行顯示。陣列的屬性:Array.Length陣列的容量利用這個屬性,我們可以取得陣列物件允許儲存的容量值,也就是陣列的長度、元素個數,這個比較好理解,陣列還有其他的屬性,比如陣列的維數等,屬性的用法比較簡單,學會一種,其他的格式基本一致,這裡我們就不舉例了。當陣列的維數、容量較多時,C#提供了foreach語句,專門用來讀取集合/陣列中的所有元素,我們把這種功能叫做遍歷。語法書寫如下:遍歷陣列:foreach(type objName in collection/Array)這段語句會逐一檢查陣列中的所儲存的變數值,並且一一將其取出,其中的type是你所要讀取的陣列物件將要儲存在objName變數的資料型別,而objName是定義了一個type型別的變數名,代表每一次從集合和陣列(collection/Array)中取得的元素,collection/Array則是所要存取的陣列物件。用這種方法只需寫一個foreach就可以遍歷出除交錯陣列以外的所有維數的陣列。注: objName的資料型別type必須與collection/Array物件的型別相同或比它大。下面我們舉一個用foreach和for遍歷規則陣列的例子,其中涉及到了一個數組得到維數的方法,比較foreach在一次性遍歷規則陣列上的優勢。 int[,,] a = new int[2, 2, 2] { {{ 1, 2 }, { 3,4}},{{ 5, 6 }, { 7,8}} };//定義一個2行2列2縱深的3維陣列a for (int i = 0; i < a.GetLength (0) ;i++ ) //用Array.GetLength(n)得到陣列[0,1,,,n]上的維數的元素數,0代表行,1列,n代表此陣列是n+1維 { for (int j = 0; j < a.GetLength(1); j++) { for (int z = 0; z < a.GetLength(2);z++ )//2代表得到縱深上的元素數,如果陣列有n維就得寫n個for迴圈 { Console.WriteLine(a[i,j,z]); } } }用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); }這兩種程式碼執行的結果是一樣的都是 每行一個元素,共8行,元素分別是1 2 3 4 5 6 7 8下面我們再做個例子,是一個利用for和foreach迴圈做的存取陣列元素的例子,首先提示使用者輸入學生的個數,然後把學生個數作為儲存學生姓名的陣列names的元素個數,採用for迴圈按照陣列的索引i從0位開始迴圈輸出“輸入學生姓名”的提示,並把使用者輸入的學生姓名按照其在陣列的索引方式names[i]儲存在names陣列中,for迴圈次數的最大值(即索引的最大值)透過陣列屬性.Length得到,我們說過容量與索引之間的關係是index=Array.Length-1,本題即i的最大值<names.Length,儲存後,提示“輸出學生姓名”,再用foreach迴圈一次性遍歷names陣列中儲存的每個元素(學生的姓名),一個一個的把它賦值給name元素,然後輸出到控制檯上。必須注意的是,藉助foreach,只能一一取得陣列中的元素,並不能利用這種語句改變陣列所儲存的元素。

  • 中秋節和大豐收的關聯?
  • 如何去除衣服上的咖哩汁?