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)