相关文章推荐
腼腆的针织衫  ·  ActiveX ...·  4 天前    · 
玩足球的馒头  ·  findstr | Microsoft Learn·  2 月前    · 
无邪的弓箭  ·  Generate SAS token | ...·  1 年前    · 

if if-else switch 語句會根據表達式的值,選取要從許多可能路徑執行的語句。 if 只有當提供的布爾表示式評估為 true 時,語句 才會執行 語句。 if-else 語句 可讓您根據布爾表達式來選擇要遵循的兩個程式代碼路徑之一。 語句 switch 會根據與表達式的模式比對,選取要執行的語句清單。

if 陳述式

if 語句可以是下列兩種形式之一:

  • if 具有 else 部分的語句會根據布爾表達式的值選取要執行的兩個語句之一,如下列範例所示:

    DisplayWeatherReport(15.0); // Output: Cold. DisplayWeatherReport(24.0); // Output: Perfect! void DisplayWeatherReport(double tempInCelsius) if (tempInCelsius < 20.0) Console.WriteLine("Cold."); Console.WriteLine("Perfect!");
  • if 只有布爾表達式評估為 true 時,沒有 else 元件的語句才會執行其主體,如下列範例所示:

    DisplayMeasurement(45); // Output: The measurement value is 45 DisplayMeasurement(-3); // Output: Warning: not acceptable value! The measurement value is -3 void DisplayMeasurement(double value) if (value < 0 || value > 100) Console.Write("Warning: not acceptable value! "); Console.WriteLine($"The measurement value is {value}");

    您可以巢狀 if 語句來檢查多個條件,如下列範例所示:

    DisplayCharacter('f'); // Output: A lowercase letter: f DisplayCharacter('R'); // Output: An uppercase letter: R DisplayCharacter('8'); // Output: A digit: 8 DisplayCharacter(','); // Output: Not alphanumeric character: , void DisplayCharacter(char ch) if (char.IsUpper(ch)) Console.WriteLine($"An uppercase letter: {ch}"); else if (char.IsLower(ch)) Console.WriteLine($"A lowercase letter: {ch}"); else if (char.IsDigit(ch)) Console.WriteLine($"A digit: {ch}"); Console.WriteLine($"Not alphanumeric character: {ch}");

    在表達式內容中 ,您可以使用條件運算符 ?: ,根據布爾表達式的值來評估這兩個表達式的其中一個。

    switch 陳述式

    語句 switch 會根據模式比對與比對表達式選取要執行的語句清單,如下列範例所示:

    DisplayMeasurement(-4); // Output: Measured value is -4; too low. DisplayMeasurement(5); // Output: Measured value is 5. DisplayMeasurement(30); // Output: Measured value is 30; too high. DisplayMeasurement(double.NaN); // Output: Failed measurement. void DisplayMeasurement(double measurement) switch (measurement) case < 0.0: Console.WriteLine($"Measured value is {measurement}; too low."); break; case > 15.0: Console.WriteLine($"Measured value is {measurement}; too high."); break; case double.NaN: Console.WriteLine("Failed measurement."); break; default: Console.WriteLine($"Measured value is {measurement}."); break;

    在上述範例中 switch ,語句會使用下列模式:

  • 關係 型模式 :比較表達式結果與常數。
  • 常數模式 :測試表達式結果是否等於常數。
  • 如需 語句所支援 switch 之模式的資訊,請參閱 模式

    上述範例也會示範此 default 案例。 當比對表達式不符合任何其他案例模式時,案例 default 會指定要執行的語句。 如果比對表達式不符合任何案例模式,而且沒有任何 default 案例,則控件會通過 switch 語句。

    語句會在 第一 switch 參數區段中 執行語句清單 ,其 案例模式 符合相符表達式,如果存在,則 其案例防護 會評估為 true switch 語句會根據文字順序從上到下評估案例模式。 當語句包含無法連線的情況時 switch ,編譯程式會產生錯誤。 這是已由大寫或模式無法比對的案例。

    default 案例可以出現在語句中的任何 switch 位置。 不論其位置為何, default 只有在所有其他案例模式不相符或 goto default; 語句在其中一個 switch 區段中執行時,才會評估案例。

    您可以為 語句的一個 switch 區段指定多個案例模式,如下列範例所示:

    DisplayMeasurement(-4); // Output: Measured value is -4; out of an acceptable range. DisplayMeasurement(50); // Output: Measured value is 50. DisplayMeasurement(132); // Output: Measured value is 132; out of an acceptable range. void DisplayMeasurement(int measurement) switch (measurement) case < 0: case > 100: Console.WriteLine($"Measured value is {measurement}; out of an acceptable range."); break; default: Console.WriteLine($"Measured value is {measurement}."); break;

    switch 在語句中,控件無法從一個參數區段跌至下一個參數區段。 如本節中的範例所示,您通常會在每個 switch 區段結尾使用 break 語句,將控制權傳出 switch 語句。 您也可以使用 return throw 語句,將控制權傳出 switch 語句。 若要模仿遞歸行為,並將控制權傳遞至其他 switch 區段,您可以使用 goto 語句

    在表達式內容中 switch ,您可以使用 表達式 ,根據與表達式的模式比對,從候選表達式清單中評估單一表達式。

    案例模式可能不夠表達,無法指定參數區段執行的條件。 在這種情況下,您可以使用 案例防護 。 這是必須與相符模式一起滿足的額外條件。 案例防護必須是布爾表達式。 您可以在遵循模式的 when 關鍵詞後面指定案例防護,如下列範例所示:

    DisplayMeasurements(3, 4); // Output: First measurement is 3, second measurement is 4. DisplayMeasurements(5, 5); // Output: Both measurements are valid and equal to 5. void DisplayMeasurements(int a, int b) switch ((a, b)) case (> 0, > 0) when a == b: Console.WriteLine($"Both measurements are valid and equal to {a}."); break; case (> 0, > 0): Console.WriteLine($"First measurement is {a}, second measurement is {b}."); break; default: Console.WriteLine("One or both measurements are not valid."); break;

    上述範例會使用 具有巢狀 關係模式的位置模式

    C# 語言規格

    如需詳細資訊,請參閱 C# 語言規格 的下列幾節:

  • if 語句
  • switch 語句
  • 如需模式的詳細資訊,請參閱 C# 語言規格 模式和模式比對一節。

  • C# 參考資料
  • 條件運算元 ?:
  • 邏輯運算子
  • switch 運算式
  • 新增遺漏案例以切換語句(樣式規則IDE0010)
  •