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

switch表达式是C# 8.0引入的简洁语法,用=>关联模式与结果,可替代传统switch语句。它返回单一值,支持常量、关系和类型模式匹配,如根据数字返回星期字符串或按成绩判断等级。示例:day switch{ 1 => “星期一”, …, _ => “无效输入” };还可处理对象类型,如shape switch计算不同图形面积。所有分支须返回兼容类型,提升代码可读性与维护性。

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表达式通过统一格式简化逻辑。

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

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 18:13:46
下一篇 2025年12月17日 18:14:19

相关推荐

发表回复

登录后才能评论
关注微信