當多個 if-else if 皆針對同一運算式比對不同常數值時,程式碼冗長且難維護。典型範例:
if (day == 0) dayName = "Sunday";
else if (day == 1) dayName = "Monday";
else if (day == 2) dayName = "Tuesday";
else if (day == 3) dayName = "Wednesday";
// ...
else dayName = "Unknown";
switch (controllingExpression)
{
case constantExpression1:
statements;
break;
case constantExpression2:
statements;
break;
// ...
default:
statements;
break;
}
controllingExpression:控制運算式,只求值一次。case constantExpression:編譯期常數 (整數、字元、字串、enum 等)。break:離開 switch;若省略會「貫穿」執行下一個 case (C# 不允許隱式貫穿,必須明確 goto case 或 break)。default:無匹配 case 時執行,可選。
switch (day)
{
case 0: dayName = "Sunday"; break;
case 1: dayName = "Monday"; break;
case 2: dayName = "Tuesday"; break;
case 3: dayName = "Wednesday"; break;
case 4: dayName = "Thursday"; break;
case 5: dayName = "Friday"; break;
case 6: dayName = "Saturday"; break;
default: dayName = "Unknown"; break;
}
day 值。case 常數。break 跳出 switch。default (若存在) → 結束。C# switch 支援
string型別比對 (不區分大小寫需自行ToLower()),且不允許隱式貫穿,比 C/C++ 更安全。