前言
本篇文章將會講述陣列 (Array) 及 foreach 陳述式,陣列是寫程式中關於大筆資料的儲存方式,而 foreach 是處理大筆資料的處理方式之一。
陣列 (Array)
在陣列中,個別資料元素的序列,可透過單一變數名稱存取,以零為基礎的數值索引來存取陣列中的每個元素,簡單來說,我們可以儲存值在陣列的某一個序列中,而這個序列是以零為基礎開始。
陣列用於將具有相同特徵或類似資料收集為單一結構,當我們在程式中為這個單一結構命名後,只需要呼叫他並添加上序列號碼即可,例如把此單一結構命名為學生,從0號開始排,之後的呼叫只需要呼叫「學生[1]」,就代表呼叫2號學生 (陣列從0開始排序)。
宣告
陣列是特殊類型的變數,可保存相同資料類型的多個值。 宣告語法稍有不同,因為必須同時指定資料類型和陣列大小。
這邊要提到 new 運算子,它會在電腦記憶體中建立陣列的新執行個體
string[] fraudulentOrderIDs = new string[3];
補充
- 「指派運算子」是=而非==,那是等於比較運算子。
- 索引以零為基礎,但在建立新陣列時,使用實際元素數目。
初始化
我們可以使用包含大括弧的特殊語法,在宣告新陣列時將陣列初始化,這可以讓我們宣告時不需要使用new關鍵字。
string[] fraudulentOrderIDs = { "A123","B456","C789"};
取得陣列大小
以上述宣告為例,下列屬性就是長度。
fraudulentOrderIDs.Lenght
foreach
此陳述式會針對陣列中的每個元素執行迴圈,在其宣告底下執行程式碼區塊,將暫時變數中的值取代為目前迴圈代表的陣列值。
這個單字的英文是「for each」,中文翻譯可以翻為「給每一個」,也就是對陣列中的每一個值進行處理,因此會需要一個代稱陣列中所有序列的值,範例如下:
範例
string[] names = { "Bob", "Conrad", "Grant" };
foreach (string name in names)
{
Console.WriteLine(name);
}
在 foreach關鍵字底下,包含 Console.WriteLine(name); 的程式碼區塊將會針對 names陣列的每個元素執行一次。
陣列的每個元素執行迴圈時,儲存在 names陣列之目前元素中的值會被指派至暫時變數 name,以供在程式碼區塊內輕鬆存取。
簡單來說,string name 是暫時指派的值,這個值是foreach運作時的方法變數,而這個值會從(in)名稱names的陣列中取得,從索引零到出現錯誤,或者說這個值代稱陣列中的所有值,它被怎麼處理,所有值就會怎麼處理。
應用:陣列總和
int[] inventory = { 200, 450, 700, 175, 250 };
int sum = 0;
foreach (int items in inventory)
{
sum += items;
}
Console.WriteLine($"We have {sum} items in inventory.");
foreach陳述式可以用於值的總和,像是大筆資料的加總,或許也可以用在歸檔和大筆標記等等,依照程式員的不同理解會有不同的用途。
後記
我當初以為 for 或 while 其中一個才是陣列最初學習的陳述式,沒想到是 foreach , 這一個陳述是是我一直忽略,沒想到是基礎中的基礎。