一、传统 switch 语句
必须写 break,漏写可能有隐藏 bug。强调做什么,如果是A就怎样,如果是B就怎样。
cs
string name = "John";
switch (name)
{
case "John":
// Do something for John
break;
case "Jane":
// Do something for Jane
break;
default:
// Do something for everyone else
break;
}
二、switch 表达式
没有 break、每一项必须返回一个值、下划线 _ 表示 default。
cs
int score = 100;
string level = score switch
{
100 => "满分",
>= 90 => "优秀",
>= 60 => "及格",
_ => "不及格"
};
三、switch 表达式 VS if / else
推荐 switch 表达式的场景:
1、有明确输入 → 输出
2、分支互斥
3、不依赖外部状态
if 语句:
cs
string GetStatus(int code)
{
if (code == 200) return "OK";
if (code == 404) return "Not Found";
if (code == 500) return "Server Error";
return "Unknown";
}
switch 表达式:
cs
string GetStatus(int code) => code switch
{
200 => "OK",
404 => "Not Found",
500 => "Server Error",
_ => "Unknown"
};