会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
慧浅行山-陈百川
博客园
首页
新随笔
联系
订阅
管理
随笔 - 18
文章 - 0
评论 - 0
阅读 -
7059
[置顶]
C# 委托与 Lambda 表达式转换机制及弱事件模式下的生命周期分析
摘要: 1. 委托内部结构 委托类型包含三个重要的非公共字段: _target 字段 静态方法包装:当委托包装一个静态方法时,该字段为 null。 实例方法包装:当委托包装实例方法时,该字段引用回调方法所操作的对象。 _methodPtr 字段 标识委托要调用的方法。 _invocationList 字段
阅读全文
posted @ 2025-02-26 20:38 陈百川
阅读(490)
评论(0)
推荐(1)
2025年3月26日
从配置读取到懒加载模式:从具体问题到抽象设计语素的提炼
摘要: 在实际项目中,我们常常需要高效、线程安全地加载配置文件。为了确保在高并发场景下配置只加载一次、且读取速度尽可能快,我们往往会设计一些特殊的加载方案。今天,我将记录一次从具体实现问题出发,逐步抽象出高级设计概念的过程。 1. 高效加载配置的需求 在项目初期,我们的需求很简单:如何在多线程环境下高效加载
阅读全文
posted @ 2025-03-26 20:43 陈百川
阅读(367)
评论(0)
推荐(1)
2025年2月25日
C#跨平台P/Invoke时导入动态库的问题
摘要: 众所周知C#的DllImport特性只允许将常量字符串赋值给DllName。 C/C++动态库在不同平台上可能具有不同的名称。 用nativedep这个库来举例:在windows上可能叫nativedep.dll、linux上叫libnativedep.so、macos上叫libnativedep.
阅读全文
posted @ 2025-02-25 17:21 陈百川
阅读(58)
评论(0)
推荐(0)
2025年2月13日
重构活动的关注点分离
摘要: 在框架开发的过程中很容易被““普遍接受””的思维束缚,导致设计结果不上不下,重构活动更是如此。 在重构或设计新框架时,应该运用关注点分离思想:首先明确推迟“普遍接受”,专注于解决技术难题和构建系统的内在价值;然后,再思考如何将这种价值以易于理解、易于采纳的方式展示给用户。过早地迎合用户的传统习惯,往
阅读全文
posted @ 2025-02-13 10:53 陈百川
阅读(10)
评论(0)
推荐(0)
2024年9月25日
错误模块名称:vrfcore.dll
摘要: 记录一下。 应用程序莫名报这个错,其它电脑上正常。 可能是Application Verifier这个工具影响到了。 进入注册表:win+R->regedit->HKEY_LOCAL_MACHINE->SOFTWARE->Microsoft->Windows NT->CurrentVersion->
阅读全文
posted @ 2024-09-25 17:12 陈百川
阅读(78)
评论(0)
推荐(0)
2024年3月23日
C#(面向对象的托管语言)类库(区别于应用程序)的异常处理思路
摘要: 1、不要做出任何应用程序才需要考虑抉择策略,不能想当然的决定一些错误情形。具体的一个体现形式是什么异常都捕获。这不是类库的职责,因为无法掌握所有的调用者的使用情形,这些不确定性是委托、虚方法、接口等特性带来的。 一个直观的例子是调用者可能故意在委托中抛出异常以便在后面的逻辑中捕获它。 同时编写类库与
阅读全文
posted @ 2024-03-23 17:56 陈百川
阅读(12)
评论(0)
推荐(0)
2023年8月8日
C#中固定编译时不确定数量的变量(相关话题fixed固定多个数组)
摘要: 以交错数组byte[][]为例。 fixed无法固定byte[][],只能在编译时固定确定数量的变量。 交错数组byte[][]中的每一个byte[]可以采用GCHandle进行固定。 int n = 10; var arrays = new byte[n][]; var arrHandles =
阅读全文
posted @ 2023-08-08 15:51 陈百川
阅读(10)
评论(0)
推荐(0)
2023年5月16日
单元测试三部曲-AAA模式
摘要: AAA 指的是 "Arrange, Act, Assert",这是一种通用的单元测试模式。 在测试方法中, 1、首先对测试对象进行准备(Arrange), 2、然后调用要测试的方法(Act), 3、最后检查预期结果(Assert)是否符合预期。 遵循 AAA 模式可以使测试方法更加清晰和易于阅读。
阅读全文
posted @ 2023-05-16 15:46 陈百川
阅读(31)
评论(0)
推荐(0)
2023年5月11日
C#中对面向standard2.0、standard2.1的项目进行单元测试
摘要: 单元测试项目的目标框架 (TargetFramework或TargetFrameworks) 不能是standard2.0或standard2.1。 这是因为.NET Standard只是一个规范,它没有运行时,不能创建应用程序,只能创建库。 如果要测试面向standard2.0的项目,可以将单元测
阅读全文
posted @ 2023-05-11 17:49 陈百川
阅读(27)
评论(0)
推荐(0)
2023年5月6日
C#中的StreamWriter和"谁创建谁释放"原则
摘要: C# 类库中的 StreamWriter 类在释放时会同时关闭其所依赖的基础流对象,这是为了确保所有缓冲数据都被写入基础流中,并且在不再需要 StreamWriter 对象时,基础流对象也能够被及时释放和关闭。这种设计的初衷是为了方便开发者使用 StreamWriter,避免出现遗漏缓冲数据或不及时
阅读全文
posted @ 2023-05-06 16:20 陈百川
阅读(24)
评论(0)
推荐(0)
下一页
公告
昵称:
陈百川
园龄:
4年10个月
粉丝:
2
关注:
8
<
2025年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
搜索
常用链接
我的随笔
我的评论
我的参与
最新评论
我的标签
随笔分类
C#(7)
C++(3)
Linux(2)
WPF(3)
设计模式(4)
随笔档案
2025年3月(1)
2025年2月(3)
2024年9月(1)
2024年3月(1)
2023年8月(1)
2023年5月(3)
2023年2月(1)
2022年12月(1)
2022年11月(2)
2022年9月(1)
2022年7月(1)
2021年10月(3)
阅读排行榜
1. 执行shell脚本报错:Syntax error: word unexpected (expecting "in") (2010)
2. 记一次Microsoft.Toolkit.Mvvm(MVVM Toolkit)的兼容性问题(1745)
3. WPF无边框的一个方案(保留默认窗口的拖动、阴影等效果)(959)
4. “未能加载工具箱项xxx,将从工具箱中将其删除”提示出现原因及解决方案(805)
5. C# 委托与 Lambda 表达式转换机制及弱事件模式下的生命周期分析(490)
推荐排行榜
1. 从配置读取到懒加载模式:从具体问题到抽象设计语素的提炼(1)
2. C# 委托与 Lambda 表达式转换机制及弱事件模式下的生命周期分析(1)
3. WPF无边框的一个方案(保留默认窗口的拖动、阴影等效果)(1)
点击右上角即可分享