Posts
All the articles I've posted.
-
C# LINQ 聚合操作全解:Count、Sum、Min、Max、Average 与 Aggregate
Published: at 05:25 AMLINQ 聚合操作覆盖从计数、求和到自定义折叠的完整场景。本文结合 Order/Product/SalesData 领域模型,演示所有聚合操作符的用法,重点解析 Count vs Any 性能陷阱、.NET 6 新增的 MinBy/MaxBy 如何单次遍历直接拿到元素,以及 Aggregate 如何在一次遍历中同时计算多个统计值。
-
C# LINQ 集合操作全解:Distinct、Union、Intersect、Except 与 .NET 6 的 *By 变体
Published: at 05:12 AMLINQ 的八个集合操作方法让去重、合并、取交集、取差集变得简洁可读。本文结合 Product/Employee 领域模型,完整演示四个经典操作及 .NET 6 新增的 DistinctBy、UnionBy、IntersectBy、ExceptBy,重点对比新旧写法差异,帮你彻底告别 IEqualityComparer 样板代码。
-
.NET 11 Process API 全面升级:一行代码告别死锁,苹果 Silicon 快 98 倍
Published: at 02:00 AM.NET 11 对 System.Diagnostics.Process 进行多年来最大的一次更新,新增一行代码捕获进程输出的高层 API,彻底解决管道死锁问题,同时带来句柄继承控制、进程生命周期管理、NativeAOT 体积缩减以及最高 98 倍的性能提升。
-
在 Blazor 中用 Web Workers 运行后台任务:.NET 11 预览版新特性
Published: at 12:58 AM.NET 11 引入了 Web Worker 项目模板,让 Blazor WASM 应用可以把 CPU 密集型任务放到后台线程运行,彻底解决 UI 卡死问题。本文介绍如何用新模板创建 Web Worker 项目、与 Blazor 主应用集成,以及 WebWorkerClient 和底层 JS 消息传递机制的工作原理。
-
用 Agent Governance Toolkit 给 .NET MCP 工具调用加一层闸门
Published: at 11:54 PMMicrosoft Agent Governance Toolkit 提供了一套 .NET 8+ 可用的 MCP 工具调用治理方式:先扫描工具定义,再用 YAML 策略决定是否放行,最后记录审计事件和 OpenTelemetry 指标。本文整理它适合解决的问题、接入步骤和落地时要注意的边界。
-
用 ReadOnlySpan<byte> 替掉 byte[]:零分配技巧,.NET Framework 也能用
Published: at 01:40 AMAndrew Lock 介绍了一个编译器级别的优化:把 static readonly byte[] 字段改为 static ReadOnlySpan<byte> 属性,编译器会把数据直接嵌入 PE 程序集的 metadata,彻底消除堆分配。这是编译器特性,与运行时无关,.NET Framework 配合 System.Memory 包同样受益。文章还详细说明了三个必须满足的前提,以及哪些写法会意外触发分配的坑。
-
用 AI Agent 把自然语言转成 SQL:三种方案的实验对比
Published: at 02:00 AM微软 ISE 团队对比了 GitHub Copilot CLI、Microsoft Agent Framework 和 Azure Databricks AI/BI Genie 三种 NL-to-SQL 方案,在 LiveSQLBench 上进行系统实验。核心发现:运行时查询验证是准确率的命门,去掉后准确率从 76.92% 跌至 38.46%;领域提示(domain hints)能额外提升 14 个百分点;剩余 ~25% 的失败几乎都来自业务逻辑语义误解。
-
C# 享元设计模式完全指南:原理、实现与实战
Published: at 01:00 AM享元模式通过共享内在状态大幅减少内存占用:5000个粒子只需3个Flyweight实例,内存从320MB降至不足200KB。本文用字符渲染和粒子系统两个例子讲清楚内在/外在状态分离、工厂池化、线程安全和DI集成。