// 建立索引 1~5 的陣列
var arr = Array.CreateInstance(typeof(int), new[] { 5 }, new[] { 1 });
// arr.GetLowerBound(0) == 1, GetUpperBound(0) == 5
foreach (int i in arr) // 編譯器自動處理下界
Console.WriteLine(i);
手寫 for 迴圈需自行呼叫 GetLowerBound/GetUpperBound,易出錯。
// 二維棋盤
Square[,] board = new Square[8, 8];
// 手寫巢狀迴圈
for (int i = 0; i < board.GetLength(0); i++)
for (int j = 0; j < board.GetLength(1); j++)
board[i, j].Paint();
// foreach 一行搞定,未來改 3D 只需改陣列宣告
foreach (Square sq in board)
sq.Paint();
注意:foreach 以列優先順序遍歷,若需行優先請用巢狀 for。
for 迴圈配合邊界檢查消除)foreach 模式有專門最佳化除非需要索引值或反向遍歷,否則永遠優先使用 foreach。它更安全、更簡潔、效能不遜於手寫迴圈,且自動適應陣列維度與下界變化。