C# 从 switch 语句到 switch 表达式

一、传统 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"
 };
相关推荐
晨星shine1 天前
GC、Dispose、Unmanaged Resource 和 Managed Resource
后端·c#
用户298698530141 天前
.NET 文档自动化:Spire.Doc 设置奇偶页页眉/页脚的最佳实践
后端·c#·.net
用户3667462526741 天前
接口文档汇总 - 2.设备状态管理
c#
用户3667462526741 天前
接口文档汇总 - 3.PLC通信管理
c#
Ray Liang2 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Scout-leaf5 天前
WPF新手村教程(三)—— 路由事件
c#·wpf
用户298698530145 天前
程序员效率工具:Spire.Doc如何助你一键搞定Word表格排版
后端·c#·.net
mudtools6 天前
搭建一套.net下能落地的飞书考勤系统
后端·c#·.net
玩泥巴的7 天前
搭建一套.net下能落地的飞书考勤系统
c#·.net·二次开发·飞书
唐宋元明清21887 天前
.NET 本地Db数据库-技术方案选型
windows·c#