int myInt = 0;
while (myInt < 10)
{
Console.Write("{0} ", myInt);
myInt++;
}
Console.WriteLine();
// 輸出: 0 1 2 3 4 5 6 7 8 9
布林運算式為 true 才執行區塊;若初始為 false 則完全不執行。
string myChoice;
do
{
Console.WriteLine("My Address Book\n");
Console.WriteLine("A - Add New Address");
Console.WriteLine("D - Delete Address");
Console.WriteLine("M - Modify Address");
Console.WriteLine("V - View Addresses");
Console.WriteLine("Q - Quit\n");
Console.Write("Choice (A,D,M,V,or Q): ");
myChoice = Console.ReadLine();
switch (myChoice)
{
case "A": case "a": Console.WriteLine("Add address."); break;
case "D": case "d": Console.WriteLine("Delete address."); break;
case "M": case "m": Console.WriteLine("Modify address."); break;
case "V": case "v": Console.WriteLine("View list."); break;
case "Q": case "q": Console.WriteLine("Bye."); break;
default: Console.WriteLine("{0} is not valid", myChoice); break;
}
Console.Write("Press any key to continue...");
Console.ReadLine();
Console.WriteLine();
} while (myChoice != "Q" && myChoice != "q");
條件在區塊結尾判斷,保證選單至少顯示一次。
for (int i = 0; i < 20; i++)
{
if (i == 10) break; // 跳出迴圈
if (i % 2 == 0) continue; // 跳過本次剩餘敘述,進入下一次迭代
Console.Write("{0} ", i);
}
Console.WriteLine();
// 輸出: 1 3 5 7 9
三段式結構:(初始化; 條件; 迭代後動作)。break 離開迴圈,continue 直接執行迭代後動作再判斷條件。
string[] names = { "Cheryl", "Joe", "Matt", "Robert" };
foreach (string person in names)
{
Console.WriteLine("{0} ", person);
}
依序取出集合元素至唯讀變數 person,無法修改集合內容,語法最簡潔。
| 情境 | 建議迴圈 | 理由 |
|---|---|---|
| 次數未知,依條件持續 | while | 先檢查條件 |
| 至少執行一次 (如選單) | do-while | 後檢查條件 |
| 已知次數或計數器控制 | for | 三段式集中控制 |
| 遍歷陣列/集合唯讀 | foreach | 語法最簡潔,避免索引錯誤 |
break:立即跳出最內層迴圈或 switch。continue:跳過本次迴圈剩餘程式碼,直接執行迭代運算式 (for) 或條件判斷 (while/do-while)。goto 標籤或重構為方法配合 return。