C#-流程控制
程式的執行預設是一步一步往下走的,但有時總要轉彎,流程控制是讓程式在某一步驟停下來檢視條件,決定往下走的方式。
bool condition = true; if (條件成立/true) { Console.WriteLine("該變數是設成ture的"); } else { Console.WriteLine("該變數是設成false的"); }
在 if-else 敘述中,如果條件評估為 true,則執行 if 區塊(then)。 如果條件為 false,則執行 else區塊。
由於條件無法同時為 true 和 false,所以 if-else 敘述的 then區塊和 else區塊永遠無法同時執行。 在執行 完then-區塊 或 else區塊後,控制權會轉移到在 if 敘述之後的下一個敘述。
在不包含 else 敘述的 if 敘述裏,如果 條件 為 true,則執行 then區塊。 如果 條件 為 false,控制權會轉移到在 if 敘述之後的下一個敘述。
then區塊和 else區塊皆可包含以大括弧括住 ({}) 的單一敘述或多個敘述。 對於單一敘述,大括弧是選擇項,建議使用。
巢狀 if 敘述:if或else區塊裏可再包含if敘述。
在下列範例中,如果 m > 10和n > 20都評估為 true,則會顯示結果1。 如果 m > 10 為 true,但 n > 20是 false,則會顯示 結果2。
// 若 m = 12 和 m = 8的情況下,結果會是如何? int m = 12; int n = 18; if (m > 10) if (n > 20) { Console.WriteLine("結果1"); } else { Console.WriteLine("結果2"); }
// 若 m = 12 和 m = 8的情況下,結果會是如何? if (m > 10) { if (n > 20) Console.WriteLine("結果1"); } else { Console.WriteLine("結果2"); }
Console.Write("輸入一個字RR: "); char c = (char)Console.Read(); if (Char.IsLetter(c)) { if (Char.IsLower(c)) //如果字元c是小寫的話 { Console.WriteLine("輸入的字母是小寫的。"); } else { Console.WriteLine("輸入的字母是大寫的。"); } } else { Console.WriteLine("輸入的字元不是一個字母。"); } //輸出範例: //輸入一個字元: 2 //輸入的字元不是一個字母。 //輸入一個字元: A //輸入的字母是大寫的。 //輸入一個字元: h //輸入的字母是小寫的。
// 改變底下變數的值來測試輸出的結果 bool Condition1 = true; bool Condition2 = true; bool Condition3 = true; bool Condition4 = true; if (Condition1) { // 條件1是true } else if (Condition2) { // 條件1是false,條件2是true. } else if (Condition3) { if (Condition4) { // 條件1和條件2是false. 條件3和條件4是true. } else { // 條件1、條件2、條件4是 false. 條件3是true. } } else { // 條件1,條件2 和 條件3 都是 false. }
Console.Write("輸入1個字元: "); char ch = (char)Console.Read(); if (Char.IsUpper(ch)) { Console.WriteLine("輸入的字元是大寫字母。"); } else if (Char.IsLower(ch)) { Console.WriteLine("輸入的字元是小寫字母。"); } else if (Char.IsDigit(ch)) //如果字元是數字的話 { Console.WriteLine("輸入的字元是數字"); } else { Console.WriteLine("輸入的字元不是一個字母"); } //Sample Input and Output: //輸入一個字元: E //輸入的字元是大寫字母 //輸入一個字元: e //輸入的字元是小寫字母 //輸入一個字元: 4 //輸入的字元是數字 //輸入一個字元: = //輸入的字元不是一個字母
//NOT 運算 bool result = true; if (!result) { Console.WriteLine("條件是true (result是false)."); } else { Console.WriteLine("條件是false (result是true)."); } // Short-circuit AND 短路求值 AND, 只有當第一個運算數的值無法確定邏輯運算的結果時,才對第二個運算數進行求值。 int m = 9; int n = 7; int p = 5; if (m >= n && m >= p) { Console.WriteLine("沒有任何一個數比m大"); } // AND and NOT if (m >= n && !(p > m)) { Console.WriteLine("沒有任何一個數比m大"); } // Short-circuit OR if (m > n || m > p) { Console.WriteLine("m 不是最小的"); } // NOT and OR m = 4; if (!(m >= n || m >= p)) { Console.WriteLine("現在m是最小的"); }