在 C# 8.0 及更高版本中,switch 表达式与模式匹配的结合极大地增强了代码的可读性和表达能力。本教程将带你从基础到进阶,全面掌握 C# 中 switch 表达式的模式匹配用法,即使是编程小白也能轻松上手!
传统的 switch 语句在 C# 中用于条件分支,但语法冗长且容易出错。C# 8.0 引入了 switch 表达式,它是一种更简洁、函数式风格的写法。
// 传统 switch 语句string GetGrade(int score){ switch (score) { case >= 90: return "A"; case >= 80: return "B"; case >= 70: return "C"; default: return "F"; }}// 使用 switch 表达式(C# 8.0+)string GetGrade(int score) => score switch{ >= 90 => "A", >= 80 => "B", >= 70 => "C", _ => "F"}; 可以看到,switch 表达式更紧凑,无需 break 或 return,每个分支直接返回值。
C# 的模式匹配允许你在 switch 中不仅判断值,还能检查类型、解构对象、甚至使用逻辑运算符。以下是几种常见的模式:
根据变量的运行时类型进行匹配:
object obj = GetSomeObject();string result = obj switch{ string s => $"字符串: {s}", int i when i > 0 => $"正整数: {i}", int i => $"非正整数: {i}", null => "空值", _ => "未知类型"}; 注意:when 子句用于添加额外条件,这是 C# 模式匹配的强大之处。
可以基于对象的属性值进行匹配:
public record Person(string Name, int Age);Person person = new("小明", 17);string message = person switch{ { Age: >= 18 } => $"{person.Name} 已成年", { Name: "小明" } => "欢迎你,小明!", { Age: < 0 } => "年龄无效", _ => "信息待确认"}; 对多个值同时进行模式匹配:
var point = (x: 0, y: 0);string location = point switch{ (0, 0) => "原点", (0, _) => "Y 轴上", (_, 0) => "X 轴上", (var x, var y) when x == y => "在 y=x 线上", _ => "普通点"}; 使用 and、or、not 组合条件:
int number = 15;string category = number switch{ < 0 => "负数", 0 => "零", >= 1 and <= 10 => "1 到 10 之间", >= 11 or >= 100 => "大于等于 11 或大于等于 100", not (>= 1 and <= 100) => "不在 1~100 范围内", _ => "其他"}; 假设我们有多种订单类型,使用 switch 表达式和模式匹配可以优雅地处理:
public abstract record Order;public record PhysicalOrder(string Address) : Order;public record DigitalOrder(string Email) : Order;public record SubscriptionOrder(DateTime ExpiryDate) : Order;string ProcessOrder(Order order) => order switch{ PhysicalOrder { Address: var addr } => $"发货到地址: {addr}", DigitalOrder { Email: var email } => $"发送下载链接至: {email}", SubscriptionOrder { ExpiryDate: var exp } when exp < DateTime.Now => "订阅已过期", SubscriptionOrder { ExpiryDate: var exp } => $"订阅有效期至: {exp:yyyy-MM-dd}", null => "订单为空", _ => "未知订单类型"}; 通过本教程,你已经掌握了 C# 中 switch 表达式与模式匹配的核心用法。这些特性不仅能让你的代码更简洁,还能提升可维护性和表达力。
记住以下关键点:
_ 作为默认情况(discard pattern)when 添加守卫条件无论你是初学者还是有经验的开发者,掌握这些 C# 教程中的高级技巧,都能显著提升你的编码效率。赶快在项目中尝试这些 高级switch用法吧!
—— 本文涵盖关键词:C# switch表达式、模式匹配、C#教程、高级switch用法 ——
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126694.html