最新 最热

C#的重载决策

重载是许多编程语言支持的特性。所谓重载,就是指可以定义多个名称相同但参数(个数、类型和顺序)不同的方法(函数)。先来看一个例子:

2023-10-22
1

C# 使用openxml解析PPTX中的文本内容

本文讨论的仅针对微软Office 2007以后的(OOXML定义)PowerPoint文档,Office 2007以前的用二进制格式定义的(ppt格式)文档不在本文讨论范围。

2023-10-22
1

逻辑式编程语言极简实现(使用C#) - 4. 代码实现(完结)

下午,吃饱饭的老明和小皮,各拿着一杯刚买的咖啡回到会议室,开始了逻辑式编程语言的最后一课。

2023-10-22
1

逻辑式编程语言极简实现(使用C#) - 2. 一道逻辑题:谁是凶手

这是一道Prolog经典的练习题,中文翻译版来自阮一峰的文章《Prolog 语言入门教程》。

2023-10-22
1

编写你的专属 MSBuild C# 代码生成器:在保存文件时自动实时生成你的代码

我之前的博客中有介绍如何在项目中生成额外的代码,也有介绍制作一个生成代码的 NuGet 包。而本文是在此基础上更进一步,可以让生成代码变成实时的;更准确的说,是在保存文件时即生成代码,而无需完整编译一次项目。...

2023-10-22
0

C# 的事件,一般你不需要担心它的线程安全问题!

时不时会有小伙伴跟我提到在 C# 写事件 += -= 以及 Invoke 时可能遇到线程安全问题。然而实际上这些操作并不会有线程安全问题,所以我特别写一篇博客来说明一下,从原理层面说说为什么不会有线程安全问题。...

2023-10-22
1

.NET/C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑

一般来说,大家在需要监听全局消息的时候会考虑 SetWindowsHookEx 这个 API。或者需要处理一些非自己编写的窗口的消息循环的时候,也会考虑使用它。

2023-10-22
0

三种方法设置 .NET/C# 项目的编译顺序,而不影响项目之间的引用

当 A 项目引用 B 项目,那么使用 Visual Studio 或者 MSBuild 编译 A 项目之前就会确保 B 项目已经编译完毕。通常我们指定这种引用是因为 A 项目确实在运行期间需要 B 项目生成的程序集。...

2023-10-22
1

C# 8.0 如何在项目中开启可空引用类型的支持

C# 8.0 引入了可为空引用类型和不可为空引用类型。由于这是语法级别的支持,所以比传统的契约式编程具有更强的约束力。更容易帮助我们消灭 null 异常。...

2023-10-22
1

Win32/C# 应用不依赖任何库使用纯 GDI+ 对窗口截图(BitBlt)

在 Windows 上有 GDI+ 来操作位图,不止能完成很多的位图操作,还提供了与 Win32 窗口的互操作,可以截到 Win32 窗口的图片。

2023-10-22
1