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

在C#中,switch表达式是一种更简洁、函数式的写法,用于替代传统的switch语句。它从C# 8.0开始引入,允许你将多个条件判断浓缩成一个表达式,并返回一个值,而不是执行一系列语句。
switch表达式使用 =>(称为“模式匹配箭头”)来关联模式和结果表达式。它通常用于根据输入值返回不同结果的场景,语法更紧凑,避免了break和case语句的冗余。
例如,将数字星期转换为中文描述:
var day = 3;
var result = day switch
{
1 => "星期一",
2 => "星期二",
3 => "星期三",
4 => "星期四",
5 => "星期五",
6 => "星期六",
7 => "星期日",
_ => "无效输入"
};
这里的 _ 是弃元模式,表示默认情况,相当于传统switch中的default。
传统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语句?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号