switch表达式是C# 8.0引入的简洁语法,用=>关联模式与结果,可替代传统switch语句。它返回单一值,支持常量、关系和类型模式匹配,如根据数字返回星期字符串或按成绩判断等级。示例:day switch{ 1 => “星期一”, …, _ => “无效输入” };还可处理对象类型,如shape 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表达式通过统一格式简化逻辑。
比如,根据学生成绩返回等级:
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语句?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1441581.html
微信扫一扫
支付宝扫一扫