贝利信息

c# 模式匹配有什么用

日期:2026-01-21 00:00 / 作者:煙雲
模式匹配是C#中高效处理不确定数据的核心工具,能一体化完成类型检查、变量绑定和值判断,显著减少if-else、类型转换和null检查。

模式匹配不是语法糖,它是 C# 里真正能帮你「少写 if-else、少做类型转换、少判 null」的生产力工具。用对了,代码更短、分支更清晰、错误更早暴露。

替代冗长的类型判断和强制转换

传统写法要先 is 判断类型,再用 as 转换,最后还要判空——三步才能安全取值。模式匹配一步到位:

if (obj is string s && s.Length > 0)
{
    Console.WriteLine($"非空字符串: {s}");
}
// ✅ 类型检查 + 变量绑定 + 值判断,全在一行完成

让 switch 表达式真正“表达逻辑”,而不是堆 case

C# 的 switch 表达式配合模式匹配,能天然处理数值范围、多类型混合、属性约束等场景,不再需要一堆 if (x >= 18 && x 。

string category = age switch
{
    < 13 => "儿童",
    >= 13 and < 18 => "青少年",
    >= 18 and < 65 => "|成人|",
    _ => "老年人"
};

安全解构 record 和自定义类型,跳过 null 检查陷阱

record 或带 Deconstruct 方法的类,可用属性模式或位置模式直接提取字段,且自动跳过 null 引用异常:

if (point is Point { X: var x, Y: var y } && x > 0 && y > 0)
{
    Console.WriteLine($"第一象限点: ({x}

, {y})"); }

最常被忽略的一点:模式匹配不是“炫技功能”,它和可空引用(string?)、记录类型(record)、switch 表达式是协同演进的。单独用某一个,效果打折;一起用,才真正消除大量样板 null 检查、类型转换和边界判断。别把它当成高级特性去学,就当它是 C# 处理「不确定数据」的标准方式——就像你默认用 foreach 而不是手写 for 循环一样自然。