声明:个人笔记,概不负责
装裱
从用户角度来讲,
所谓 C# 模式匹配,就是一种运算,一种不改变原值的布尔运算,可以用来简化代码结构。
我觉得,有些文章在介绍这个语言功能时,有点激动过了头,有点莫名其妙的、不知所然的 装
这可能是因为,这种一楼的 代码结构,通常很少变动,大家习惯了 搬二楼的砖,造二楼的工具
对于 pattern matching 我用到现在的体会,感觉像那时候对 LINQ 的初接触,真是 激动人心哪!
官方文档、许多博客,讲 C# 模式匹配,开篇那么多 花里胡哨的(所谓精确)介绍干嘛,徒增 用户心智负担。
这玩意的本质,对用户来说,就是这么简单啊,
我关心 你语言的实现 干嘛,我就是很 Low 的、搬二楼砖的 用户呀,我会关心 if-else 的实现吗?
我只关心,怎么用耶,怎么 飞起来……
轮回
这一世(在这个世界里),我们终于回看,源自于 结构化编程(Since 1966)近百年没有变化的 if-else 与 switch 结构.
为什么 bool [来] 的那么 平凡,[去] 得那么 简单。【来= 求值方式】 【去= 控制流分派】
如果,为它的 [来] 做点什么呢? 如果,为它的 [去] 做点什么呢?
一直以来,这种层次的活,都是住 二楼的人 管的;
一楼的样板房,近百年来没有啥变化,造一楼的人 不关心这个层次的问题。
所谓 C# 模式匹配,就是一种运算,一种不改变原值的布尔运算,可以用来简化代码结构。
三观,《九阴真经》总纲
C# 模式匹配,在 when 上,彻底暴露了其 本质
//// 拿来运算后再用,必须用 when 做统一入口;拿来就用,可以用模式// // 换句话说,就是说 when 是统一模式,表示要开始 自定义计算了,否则全部用 内置模式 计算;// 哪天有啥 内置模式 支持 位操作,那么就可以不用 when 了;// 换句话说,完全可以不用 内置模式 计算,全部用 when 来算。 //// 所谓 C# 模式匹配,就是一种运算,一种不改变原值的布尔运算,可以用来简化代码结构。//public PacketState LastStatus => _flags switch{//// The order is important//_ when (_flags & PacketState.Responded) != 0 => PacketState.Responded,_ when (_flags & PacketState.Acked) != 0 => PacketState.Acked,_ when (_flags & PacketState.Sent) != 0 => PacketState.Sent,_ when (_flags & PacketState.Created) != 0 => PacketState.Created,_ => PacketState.None};
以上观点, 通过 Copilot 校核,不是 错误 观点,但却被 批改,要用 规范术语
神经病啊,我 虽然不精确,但是完全没有错,基本涵盖其 九成本质
我是用户耶, 我不是机器,自由的思想 不受 钦定术语 的束缚,自由的飞翔……
化身
// TODO: 遇到 合适的例子吧,水货 代码反正多呢
==== 好像也没什么说的,结束