C# 重複結構
for
for 迴圈用來重複執行程式或程式區塊,直到指定的運算式評估為 false。
class ForLoopTest { static void Main() { for (int i = 1; i <= 5; i++) { Console.WriteLine(i); //主控台的輸出,文字輸出,WriteLine輸出後跳行 } } } /* Output: 1 2 3 4 5 */
在上述範例中的 for 程式會執行下列動作。
首先,變數 i 的初始值建立。 這個步驟中只會執行一次,不管迴圈會重複幾次。
迴圈進入的條件: i <= 5,當i小於等於5條件成立(true),進入迴圈,否則的話(false),跳出迴圈。
進入迴圈:
執行迴圈主體的 Console.WriteLine ,此行是主控台的輸出程式,會把 i的值印在畫面上。
做完迴圈主體後,會執行i++ (i = i + 1),i值加1。
再判斷迴圈是否要進入(看上方)。
當 i 等於 6的時候,迴圈就會結束。
for的一般性結構如下:
for (初始子; 迴圈進入條件; 迭代子) 迴圈主體
初始子,進入迴圈前的初始敘述。
迴圈進入條件,成立true進入迴圈主體,不成立false離開迴圈結構。
迭代子:每次迴圈主體執行完後所要做的事。
static void Main() { int i; int j = 10; for (i = 0, Console.WriteLine("開始: {0}",i); i < j; i++, j--, Console.WriteLine("i={0}, j={1}", i, j)) { // Body of the loop. } } // 輸出: // 開始: 0 // i=1, j=9 // i=2, j=8 // i=3, j=7 // i=4, j=6 // i=5, j=5
下面的範例是一個無窮迴圈:
for (; ; ) { // ... }
while
class WhileTest { static void Main() { int n = 1; while (n < 6) { Console.WriteLine("n目前的值為:{0}", n); n++; } } } /* Output: n目前的值為: 1 n目前的值為: 2 n目前的值為: 3 n目前的值為: 4 n目前的值為: 5 */
class WhileTest2 { static void Main() { int n = 1; while (n++ < 6) { Console.WriteLine("n目前的值為: {0}", n); } } } /* Output: n目前的值為: 2 n目前的值為: 3 n目前的值為: 4 n目前的值為: 5 n目前的值為: 6 */
while 運算式的進入測試是在每次執行迴圈”前”發生,因此有可能while 迴圈不會執行,或許執行一次以上。
在迴圈中,可使用break、goto、return 或 throw敘述將控制轉移到迴圈外部,可以終止 while 迴圈。
若要在不結束迴圈的情況下跳至下一個重覆項目,可用 continue 敘述。
請注意,上述三個範例的輸出差異取決於 int n 遞增的地方。
下面的範例將不會產生輸出。
class WhileTest3 { static void Main() { int n = 5; while (++n < 6) { Console.WriteLine("n目前的值為:{0}", n); } } }
do
public class TestDoWhile { public static void Main () { int x = 0; do { Console.WriteLine(x); x++; } while (x < 5); } } /* 輸出: 0 1 2 3 4 */
do-while 迴圈 (Loop) 會在迴圈進入條件運算式之前執行一次,與 while 敘述不同。
我們可以在 do-while 區塊中的任一位置使用 break 陳述式中斷此迴圈。
我們可以使用 continue 陳述式直接跳至 while 迴圈進入條件敘述。
如果 while 迴圈進入條件敘述評估為 true,會從迴圈中的第一個敘述繼續執行。 如果迴圈進入條件敘述評估為 false,則從 do-while 迴圈之後的第一個敘述繼續執行。
do-while 迴圈也可以透過 goto、return 或 throw 敘述結束。