首页
C&C++
C#语言
Java
Python
人工智能
Web前端
数据库
面试笔记
其它
软件推荐
搜索
十年C#老兵吐槽:命名混乱、版本爆炸、语法膨胀…但我依然爱它
C# 这门语言养了我整整十年。大学时我学的是 Java。从 C/C++ 转过来简直是一种解脱——终于不用再面对该死的指针了。第一份工作被迫学 C#。我写的第一个程序根本是 披着C#外衣的Java代码(毕竟当时我只会Java)。我热爱 C# 和整个 .NET 生态:强类型、多范式、工具链完...
6-7 9:16
53
规范模式:终结仓储臃肿的终极武器(C#实战)
这是一个API发布后的清晨。原本简单的新端点——通过创建者名称获取聚会并包含参与者、邀请函和创建者——却在GatheringRepository中膨胀成了又一个新方法。突然间,你发现自己面对着这样的方法群:GetByIdWithCreatorAndAttendeesAsync(...)GetByNameWithEverythingAsy...
6-7 9:15
49
责任链模式:告别臃肿的if-else,让请求在对象链中智能传递
在上一篇文章《观察者模式:让代码主动响应,告别轮询》中,我们探讨了观察者模式如何以解耦的方式实现系统事件响应。作为行为设计模式系列的第二篇,本文将介绍另一种行为模式——责任链模式(Chain of Responsibility)。顾名思义,该模式会为请求创建一条由多个潜在...
6-7 9:13
80
策略设计模式:动态切换算法的艺术(C#实现)
策略设计模式是一种行为型设计模式,它允许在运行时从算法族中选择特定算法。通过将算法单独封装并使其可互换,该模式能帮助我们创建灵活、可复用的代码,而无需修改现有代码结构。无策略模式时的问题若不使用策略模式,我们通常需要依赖条件语句(if-else或switch-case...
6-7 9:11
80
告别MediatR:构建极简CQRS架构的终极指南
Jimmy Bogard近期宣布,MediatR将对达到一定规模的企业采用商业许可模式。这一变化促使许多团队重新评估其使用方案,并开始寻找替代方案。现在正是转型的好时机。尽管CQRS与MediatR并非同一概念,但MediatR几乎已成为.NET生态中CQRS模式的代名词。大多数项目仅将其用作...
6-7 9:4
72
从"Hello World"到高手进阶:10个必掌握的.NET Core实战技巧
你已经告别了Hello World阶段,能比泡方便面还快地搭建API,但总觉得哪里不对劲...仿佛每次生产环境出问题(本地却正常)时,框架都在无声地嘲笑你。是的,是时候升级了。依赖注入(DI) —— 不只是流行词我知道你用过了——可能从StackOverflow复制来的。也许注入过一两...
6-7 9:3
80
LINQ的魔幻与禁忌:5个让你既爱又恨的"骚操作
LINQ的使用,往往在巧妙与邪恶之间只有一线之隔。我曾深刻领悟这一点——在一次代码评审中,我自信满满地展示了一段自认为堪称艺术品的LINQ代码,结果看着资深开发者的表情逐渐扭曲。这……确实能跑,他缓缓说道,但今晚我可能会因为这段代码失眠。LINQ不仅是一种工具,...
6-7 9:1
67
.NET 10震撼来袭:Preview 3七大核心升级全解析
软件开发的世界从不停止进化,.NET亦是如此。.NET 10 Preview 3不仅是技术更新,更为Web、移动端、云服务等领域的应用开发奠定了未来基础。这个版本聚焦速度、简洁与智能编码,让开发者能用更优雅高效的方案解决复杂问题。为什么选择.NET 10?这不仅是版本号的改变,更...
6-7 9:0
71
字符串是个好员工,但别让它当CEO!—— C#强类型设计实战指南
字符串(String)是C#中最常用的数据类型之一。姓名、地址、消息、JSON、XML、状态、类型名称——字符串无处不在。但当我们过度使用字符串时,问题就会显现——它们会变得脆弱、易错,且难以维护。本文将带你深入探讨:为何滥用字符串是危险的使用键值替代方案如何提升...
6-7 8:58
70
C#代码的七宗罪:老司机带你清除这些技术债(附改造方案)
前几天我review了一个代码库——这是个从.NET Framework 4.5时代遗留下来的企业级应用。虽然保留了分层架构,但业务逻辑和UI事件纠缠不清,几乎每行代码都在呐喊:我是赶工写出来的!这个下午给了我当头一棒。从业多年,我见过太多杰作:臃肿的控制器方法、深不见底的if...
6-7 8:56
66
<
1
2
3
4
5
6
7
8
9
10
…
>
>>
阅读排行
深入WPF数据绑定:Converter...
3042
C#异步定时器:精准定期执行...
3037
WPF应用中融入ASP.NET Core...
2367
在C# .NET 8中使用MediatR实...
2090
延迟等待的艺术:C#中Task.D...
1809
.NET Core 中集成Dapper高级...
1767
.NET 性能分析:.NET 8 中的...
1675
WPF中轻松生成动态图表:实...
1767
精准数字处理:C#中四舍五入...
1932
串口通信利器:RJCP.DLL.Ser...
1685
轻松上传:C#中HTTP POST mu...
1768
C#屏幕截图:轻松捕获活动窗...
1622
C# 中的并发性:使用 Blocki...
1488
C#中轻松实现二维码和条形码...
1428
C#串口通讯实战:基础功能及...
1468
深入了解SOAPCore:在.NET 6...
1404
在 .NET8 中通过 RabbitMQ实...
1257
解决WPF界面卡死等待问题:...
2421
ASP.NET 后端开发:全面的路...
1186
WPF中轻松操控GIF动画:WpfA...
1298
MediatR让进程内通信如此简...
2363
实现WPF多语言支持:简单灵...
1247
.NET —ToList 和 ToArray ...
1115
.net中OpenCVSharp+Zxing读...
1228
还在到处加异常日志记录?试...
1214
C#中Task.Run怎么用?能解决...
1214
Microsoft.Extensions.Loggi...
1103
ASP .NET Core 8+ 中的全局...
1047
打造真实感十足的速度表盘:...
1169
.NET 9中ToList 和 ToArray ...
1029
解密C#中允许HttpClient使用...
1017
WPF神器揭秘:一键截图,轻...
1004
掌握System.Text.Json中的多...
1123
掌握ImageSharp:图像处理的...
1114
深入理解WPF中的Dispatcher...
1094
轻松实现.NET应用自动更新:...
1088
C#文件编码检测:轻松解析文...
950
C# 中的弱事件 — 如何避免...
933
.NET 中的 UUID 和 ULID:最...
932
ASP.NET Core .NET 8 中间件...
925
使用OpenXML在.NET 6中导出E...
1027
在 ASP.NET Core Web API 中...
899
解密C# Socket通信:克服粘...
1005
WPF魔法:轻松实现依赖注入...
2108
FluentFTP实战:轻松操控FTP...
981
C# .NET 8中的自动映射器Aut...
850
ZLogger v2 架构:利用 .NET...
839
WPF大展示专业指南:轻松实...
1016
WPF开发新境界:MVVM设计模...
909
C# Socket通信:灵活传输DTO...
854