C# 中的模式匹配属性模式如何匹配对象?

属性模式通过{PropertyName: pattern}语法检查对象属性值,要求对象非null且属性可读,支持常量、变量及嵌套匹配,如person is {Name: “Alice”, Age: >=30}或employee is {Address: {City: “Beijing”}},并可用于switch表达式实现多条件分支,提升代码简洁性与可读性。

c# 中的模式匹配属性模式如何匹配对象?

在 C# 中,属性模式(Property Pattern)用于在模式匹配中检查对象的属性值是否符合预期。它不关心对象的具体类型,只关注对象是否有指定的属性以及这些属性是否满足特定条件。

属性模式的基本语法

属性模式使用 { } 包裹一组属性名与子模式的组合,语法如下:

exampleObject is { PropertyName: pattern }

如果 exampleObject 不为 null 且其 PropertyName 的值匹配 pattern,则整个模式匹配成功。

如何匹配对象属性

属性模式通过以下方式匹配对象:

对象不能为 null,否则匹配失败对象必须具有模式中列出的公共可读属性每个属性的值需满足对应的子模式(可以是常量、变量、递归模式等)

例如,判断一个 Person 对象的 Name 是否为 “Alice”,Age 是否大于 30:

if (person is { Name: “Alice”, Age: >= 30 })
{
  Console.WriteLine(“找到符合条件的 Alice”);
}

嵌套属性匹配

属性模式支持嵌套,可以检查复杂对象的深层属性:

if (employee is { Address: { City: “Beijing”, ZipCode: “100000” } })
{
  // 匹配地址城市为 Beijing 且邮编为 100000 的员工
}

这要求 employee 和 employee.Address 都不为 null,且对应属性匹配。

结合 with 表达式和 switch 模式

属性模式也常用于 switch 表达式中进行多条件分支判断:

return shape switch
{
  { Type: “Circle”, Radius: >= 0 } => “圆形”,
  { Type: “Rectangle”, Width: var w, Height: var h } => $”矩形 ({w}x{h})”,
  _ => “未知形状”
};

基本上就这些。属性模式让 C# 的模式匹配更贴近实际数据结构,写起来简洁又直观。只要对象有对应属性且值匹配,就能成功识别,无需强制类型转换。注意 null 值会直接导致匹配失败,设计时要考虑这一点。

以上就是C# 中的模式匹配属性模式如何匹配对象?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1440562.html

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

相关推荐

发表回复

登录后才能评论
关注微信