- 博客(32)
- 收藏
- 关注

原创 Mock 单元测试详细
在单元测试中,Mock 是一种模拟依赖对象行为的技术,主要用于隔离待测试对象(SUT: System Under Test)与其依赖项(通常是接口、类或外部系统)。这样,我们可以专注于测试目标代码的逻辑,而不需要考虑其依赖项的实现细节或副作用。在单元测试中,为了方便 Mock,我们通常为目标对象的依赖项定义接口。csharp复制代码Mock 是单元测试中模拟依赖对象的核心工具,可以提升测试效率并简化依赖管理。在 C# 中,Moq 是最常用的 Mock 框架,提供了简单直观的 API。
2025-01-15 13:44:13
1660
原创 avalonia 显示链接图片有那些方法?
提供了简单且高效的方式加载网络图片,适合希望减少开发工作量的场景。手动加载:在 ViewModel 中异步加载图片,适合需要自定义加载逻辑或不希望引入额外依赖的场景。辅助类加载:通过创建类,统一管理图片加载逻辑,增强代码的可维护性。根据项目需求选择最适合的方法,实现网络图片的加载和显示。
2025-04-07 09:42:06
363
原创 1字节(8位)表示8个状态位
通过位掩码操作,可以单独设置、读取或修改某一位的状态。,适用于嵌入式系统、网络协议、硬件控制等场景。通过结构体和位字段特性(需。通过以上方法,可以用。
2025-03-27 09:18:16
580
原创 c#处理算数溢出的情况
在C#中,算术运算的溢出处理可以通过 checked和 unchecked关键字控制,默认行为是,但可以通过配置或代码块显式调整。
2025-03-24 16:36:01
488
原创 .net 项目引用与 .NET Framework 项目引用之间的区别和相同
相同点:引用的目的、管理器、类型和编译依赖在 .NET 和 .NET Framework 中是相同的。不同点:项目类型、目标框架、引用方式、传递引用、项目文件格式和依赖解析在 .NET 和 .NET Framework 中有所不同。了解这些区别和相同点有助于你在不同的 .NET 版本之间进行项目管理和开发。
2025-01-22 20:59:12
1084
原创 如何在日常工作中使用AI
**使用AI生成文章**:借助像WPS灵犀这样的AI工具,输入你的主题和关键点,让AI帮助你生成初稿。-**DeepSeek**:致力于深度学习研究的公司开发的产品,适用于需要高度定制化解决方案的企业用户。-**训练AI查找自己需要的内容**:通过提问的方式与AI互动,逐步调整查询参数以获得更精确的结果。-**确定主题以及需要的分论点**:首先明确你的PPT主题和主要分论点,这有助于后续内容的组织。-**对AI的内容做基本的判断**:评估AI提供的信息准确性,并结合自己的专业知识进行筛选。
2025-01-18 21:55:33
704
原创 C# 特性(Attributes)详解
特性(Attributes)是 C# 提供的一种强大的元数据机制,用于在代码中添加描述性信息。它可以附加到程序的各种部分(类、方法、属性、字段等),供运行时或编译时使用。内置特性继承自类。csharp复制代码将特性应用到类或方法。csharp复制代码特性是元数据:用于为代码添加描述性信息或控制行为。易扩展性:可以通过自定义特性满足复杂需求。结合反射:在运行时可以动态读取特性信息,适合灵活场景。应用广泛:从简单的标记到复杂的框架行为控制,特性都能胜任。
2025-01-15 15:00:59
752
原创 WPF 数据绑定中的通知机制及其性能考虑
与不同,使用 WPF 的属性系统来自动处理属性变更的通知。通常,用于控件和自定义控件的属性。csharp复制代码在上述代码中,IsClicked是一个,它支持数据绑定和自动通知变化。当IsClicked的值改变时,所有绑定到该属性的控件会自动更新,而无需显式地触发事件。WPF 的数据绑定机制强大且灵活,通过和等接口实现了数据和 UI 之间的自动同步。虽然 WPF 提供了强大的绑定功能,但开发者也需要关注性能问题,特别是在绑定频繁变化的属性、大型集合或复杂 UI 组件时。
2025-01-01 13:19:17
1106
原创 WPF-绑定
数据绑定是 WPF 中一种强大的机制,用于在数据源和 UI 元素之间建立连接,使得数据的变化能够自动反映在 UI 上,反之亦然。数据绑定简化了 UI 和数据层之间的交互,提高了代码的可维护性和可读性。单向绑定:数据从数据源流向目标。双向绑定:数据在数据源和目标之间双向流动。单向到源绑定:数据从目标流向数据源。一次绑定:数据从数据源流向目标一次。默认绑定:根据目标属性的决定绑定模式。
2024-12-30 13:43:59
822
原创 为什么建议使用 ReadOnlySpan<T>?
一种高效、安全的方式来操作数据片段,在性能和内存管理方面具有显著优势。它适用于高性能、内存敏感的应用场景,但需注意其生命周期的限制,避免不当使用导致错误。
2024-12-27 18:09:56
632
翻译 Avalonia UI 和 MAUI - 各有所长
Avalonia UI 和 MAUI 都是跨平台开发的出色选择,各自提供了独特的优点,具体取决于项目的实际需求。.NET 生态系统的强大之处在于它为开发人员提供了多种选择,确保他们可以选择最适合其特定项目的最佳方法。.NET 的美妙之处在于,一个架构良好的应用程序可以重用大量代码,无论使用哪种 UI 框架。
2024-12-20 09:44:16
706
原创 WPF MVVM模式介绍
描述:表示应用程序的数据和业务逻辑。职责:负责数据的存储和操作,通常不包含任何 UI 逻辑。定义一个事件类。csharpMVVM 模式:将应用程序分为 Model、View 和 ViewModel,提高代码的可测试性和可维护性。命令绑定:使用ICommand接口将用户的操作与 ViewModel 中的方法关联起来。事件聚合器和消息传递机制:使用 Prism 的或 MVVM Light 的Messenger在松耦合的组件之间通信。
2024-12-10 23:25:53
432
原创 yield 关键字在 C# 中用于实现迭代器方法
在这个示例中,GetNumbers 方法是一个迭代器方法,它使用 yield return 逐个返回从 1 到 5 的整数。在这个示例中,GetPeople 方法是一个迭代器方法,它使用 yield return 逐个返回 Person 对象。在这个示例中,当 i 等于 5 时,yield break 语句会提前终止迭代,因此只会输出 1 到 4。状态保存:迭代器方法在每次 yield return 后会保存当前的状态,以便下次继续执行。延迟执行:迭代器方法的执行是延迟的,只有在需要时才会生成下一个值。
2024-11-07 17:19:59
327
原创 Avalonia 相关知识内容
Avalonia 是一个开源的跨平台 .NET UI 框架,支持 XAML 标记语言。特点:跨平台(Windows、macOS、Linux)、高性能、MVVM 支持、丰富的控件库。
2024-11-05 22:23:44
534
原创 事件总线 Event Bus
实现一个功能强大的事件总线(EventBus)在C#中涉及设计一个灵活、高效且易于使用的事件发布与订阅系统。以下是一个简化的示例,展示了如何构建一个基本的事件总线,同时考虑到了类型安全、线程安全以及事件处理的灵活性。
2024-06-16 16:40:37
222
1
原创 MAUI-导航 TabbedPage的使用
也可以用TabbedPage选项卡的方式进行导航。选项卡的标题由 Page.Title 子页的 属性定义,选项卡图标由 Page.IconImageSource 子页的 属性定义。UnselectedTabColor,类型 Color为 ,表示选项卡在未选中时的颜色。SelectedTabColor,类型 Color为 ,指示选中选项卡时选项卡的颜色。BarBackgroundColor,类型 Color为 ,定义选项卡栏的背景色。BarTextColor,类型 Color为 ,表示选项卡栏上文本的颜色。
2023-11-02 12:35:10
1882
原创 替代if esle的高级玩法
if else 是入门最常遇到的一种结构,这种结构简单易懂,深受初学者喜爱。但是 If-Else通常是一个糟糕的选择。它的可读性差,如果用的太多,会导致结构重构困难。今天我就介绍替代 If-Else的方法。
2022-12-15 22:35:28
472
原创 工作日记 c# 关于取余、取整
c# 关于取整工作中,类型的转换是很常见的情况。有时候我们会忽略了一些情况,比如取整的时候,double和int混合一起做取整操作。取整的时候,如果是 int/int ,属于int类型运算,最后的结果是一个整数,但是如果运算结果是double类型,会有一个int转double的过程。如7/10,数学运算的结果是:0.7(double),但是因为这是整形运算,结果会自动转换成整形,然后再赋值,也就是存在 一个 double转int类型的一个过程(0.7的转换结果是0)。所以得到的结果一直都是0。不能把
2021-04-22 12:56:20
912
原创 c# 播放音乐
using System.Media;SoundPlayer player = new SoundPlayer(@"./song/err2.wav");player.Play();
2020-12-12 18:12:23
232
原创 datatable转model的工具类
这里写自定义目录标题 public class DBTableHelper<T> { /// <summary> /// datatable 转model /// </summary> /// <param name="table"></param> /// <returns></returns> public stat
2020-12-11 21:45:18
230
原创 sql里面的asc和desc排序原理
最近遇到一个数据库的问题,sql语句是对版本进行降序排列。如下例子:用下载sql去查询,没有排序的效果。SELECT * FROM data2 WHERE pn='' AND wsid='' AND order_ork='' ORDER BY 'tpver' desc 如下两个版本V3.7.2-R1.0Z1.3.1V3.11-R9.0Z1.4因为desc的排序方式是hashcode,...
2019-11-19 17:50:29
1993
原创 定时器ping ,是内存泄漏还是并发过多出现的资源不足?
我做了一个小工具,每隔三十秒监测在线ip,用ping扫描局域网内的ip,得到在线的ip。但是出现一个问题大概运行十个小时后出现资源不足的问题,内存在时间长之后,被占用太多。为了验证是我的ping的问题,我把定时器改为500ms监测一次。结果内存成指数增长。我以为超时的那些都会被gc回收。但是好像没有。我百度了一下,没有找到解决办法。public void StartScanIP() ...
2019-08-06 14:52:05
835
2
原创 foreach遍历时不能改变集合的值
最近遇到一个比较坑爹的事情,因为list这些集合比较常用foreach进行循环,比较方便。所以项目里很多foreach,但是今天遇到一个异常,如下图:很困惑,于是看了foreach的底层源码。才发现原来foreach的底层是迭代器iterator实现的,通过下标判断是否还有下一个元素,但是对于下标边界,foreach只会算一次,这一点和for不同。 这就是为什么我们改变list的值后,出现异常...
2019-05-18 10:59:25
2428
转载 转 关于DataGridView基本操作,记录在自己的博客,非原创
找了很久怎么处理datagridview的博文,这个还是比较清楚的,所以在自己的博客只是当做笔记本记录
2019-04-30 14:44:53
131
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人