Tag: C#
All the articles with the tag "C#".
-
C# 多态:base 引用和接口引用调用谁
Published: at 12:41 AM同一条调用语句,换成 base 引用或接口引用结果就变了。三个例子在 .NET 10 SDK 上实测,讲清 override、new 隐藏、显式接口实现的选成员与派发规则,以及编译器建议背后两种不同行为。
-
C# 委托:Action、Func 与多播调用契约
Published: at 12:52 AM用一个返回 12 而不是 18 的多播例子,核对 Action、Func 的调用形状、方法组兼容规则、异常中断和最后一个返回值的来源,再决定回调 API 该写清哪条约定。
-
C# 事件与委托:订阅边界、失败边界与生命周期
Published: at 03:55 AM事件不是委托的别名。从类型与成员的区别出发,看清订阅权限、多播调用的失败点、async void 处理器和退订各自能保证什么,再决定通知 API 该把哪条边界写进文档。
-
C# 运算符:一条表达式要回答的四个问题
Published: at 02:40 AM7/2 赋给 double 为什么还是 3?乘号优先级更高,为什么方法调用仍按从左到右执行?从操作数类型、分组、求值顺序到相等契约,用四个问题拆开 C# 运算符,让日常表达式能被解释,不必靠猜。
-
C# 封装:用公开操作守住不变量
Published: at 01:35 AM从一个最小值大于最大值的区间讲起,说清楚封装要守的是对象的不变量:构造与变更共用一条校验、用公开操作替代逐字段赋值,以及 readonly 和只读视图各自的边界。
-
MongoDB BSON 映射:字段名、ID 与不可变记录
Published: at 12:07 AMBSON 映射是 C# 对象与存储文档之间的契约。本文拆开字段名、ID 表示、不可变记录的创建路径、注册时机与多余字段策略,并给出一份可落成测试的兼容性检查清单。
-
C# List 与 HashSet:序列与成员资格
Published: at 12:52 AM同一个产品编号出现两次,该保留还是合并?用 .NET 10 的实跑输出拆开 List 与 HashSet:位置、比较器、哈希身份和保序去重的差别,最后给一份能照着改的选型判断。
-
CBOR 入门:.NET 里什么时候用它换掉 JSON
Published: at 01:50 AMCBOR 用二进制编码 JSON 那套类型,.NET 只给 CborWriter 和 CborReader,没有对象映射。同一份数据实测 80 字节对 107 字节,文中拆开首字节、跑通读写代码,再说明什么条件下值得换掉 JSON。
-
C# 14 扩展属性:状态存表里还是塞进对象
Published: at 01:33 AM扩展属性没有背衬字段,状态得另找地方。一条路用 ConditionalWeakTable 挂外部数据,一条路用 Unsafe.As 伪造对象布局;后者会弄坏类型身份、相等判断和哈希,文中给出 .NET 10 的实测结果与边界。