C#的switch表达式是什么?如何用更简洁的语法替代switch语句?

幻夢星雲
发布: 2025-11-13 12:58:07
原创
222人浏览过
<p>switch表达式是C# 8.0引入的简洁语法,用=>关联模式与结果,可替代传统switch语句。它返回单一值,支持常量、关系和类型模式匹配,如根据数字返回星期字符串或按成绩判断等级。示例:day switch{ 1 => "星期一", ..., _ => "无效输入" };还可处理对象类型,如shape switch计算不同图形面积。所有分支须返回兼容类型,提升代码可读性与维护性。</p>

c#的switch表达式是什么?如何用更简洁的语法替代switch语句?

在C#中,switch表达式是一种更简洁、函数式的写法,用于替代传统的switch语句。它从C# 8.0开始引入,允许你将多个条件判断浓缩成一个表达式,并返回一个值,而不是执行一系列语句。

什么是switch表达式?

switch表达式使用 =>(称为“模式匹配箭头”)来关联模式和结果表达式。它通常用于根据输入值返回不同结果的场景,语法更紧凑,避免了break和case语句的冗余。

例如,将数字星期转换为中文描述:

var day = 3;
var result = day switch
{
    1 => "星期一",
    2 => "星期二",
    3 => "星期三",
    4 => "星期四",
    5 => "星期五",
    6 => "星期六",
    7 => "星期日",
    _ => "无效输入"
};
登录后复制

这里的 _ 是弃元模式,表示默认情况,相当于传统switch中的default。

如何用switch表达式替代传统switch语句?

传统switch语句需要写多个case、break,代码重复且容易出错。switch表达式通过统一格式简化逻辑。

比如,根据学生成绩返回等级:

法语写作助手
法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

法语写作助手 31
查看详情 法语写作助手
string grade = score switch
{
    >= 90 => "A",
    >= 80 => "B",
    >= 70 => "C",
    >= 60 => "D",
    _ => "F"
};
登录后复制

这里使用了关系模式(如 >= 80),可以直接判断数值范围,无需额外if语句。

支持复杂类型和属性匹配

switch表达式还能结合对象类型和属性进行模式匹配。例如处理不同形状并计算面积:

double area = shape switch
{
    Circle c => Math.PI * c.Radius * c.Radius,
    Rectangle r => r.Width * r.Height,
    Triangle t => 0.5 * t.Base * t.Height,
    null => throw new ArgumentNullException(nameof(shape)),
    _ => throw new ArgumentException("未知形状")
};
登录后复制

这种写法清晰表达了“根据不同类型执行不同逻辑”的意图,比一堆if-else或传统switch更直观。

基本上就这些。switch表达式适合用于返回值的多分支选择,让代码更短、更易读,尤其是在处理枚举、数值范围或对象类型时优势明显。不复杂但容易忽略的是,它要求所有分支都返回相同类型或可隐式转换的类型。合理使用能让逻辑更干净。

以上就是C#的switch表达式是什么?如何用更简洁的语法替代switch语句?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号