2025-09-29
C#
00

摘要

在C#中,有时需要执行命令行指令来完成特定的任务。这可能包括运行脚本、管理服务、获取系统信息等。C# 提供了 System.Diagnostics 命名空间中的 Process 类来启动和管理系统进程,包括命令行窗口(cmd.exe)。

正文

应用场景

  1. 自动化构建和部署:使用命令行工具如 MSBuild 或者 PowerShell 脚本来编译和部署应用程序。
  2. 系统管理:执行系统管理任务,如启动或停止服务,管理文件和目录等。
  3. 网络操作:运行网络诊断工具如 ping、ipconfig 或自定义网络操作脚本。
  4. 数据库操作:执行数据库备份、还原或运行 SQL 脚本。
  5. 第三方工具集成:调用 Git、Docker 或其他命令行工具进行自动化操作。
2025-09-29
C#
00

摘要

Harmony 是一个用于 .NET 的库,它允许开发者在运行时创建、应用或修改程序集的补丁,即所谓的 "热补丁" (hot patching)。这使得开发者能够动态地改变已编译代码的行为,而无需修改原始的源代码。Harmony 在游戏Mod开发、软件插件系统和复杂的应用程序中非常流行,因为它可以在不改变原始程序集的情况下,注入或改变代码的功能。

正文

应用场景

Harmony 的常见应用场景包括:

  1. 游戏Mod开发:在不修改游戏原始代码的情况下添加新功能或修改现有功能。
  2. 软件扩展:在现有应用程序中注入代码以增加新功能或修改现有逻辑。
  3. 行为修正:修复第三方库中的错误或不希望的行为,而不需要等待官方更新。
  4. 测试和Mocking:动态替换方法以进行单元测试或集成测试。

Harmony 的基本概念

在深入例子之前,让我们快速了解一下 Harmony 的一些基本概念:

  • 原始方法 (Original Method):需要被修改或补丁的方法。
  • 前置补丁 (Prefix):在原始方法执行之前运行的代码。
  • 后置补丁 (Postfix):在原始方法执行之后运行的代码。
  • 替换方法 (Transpiler):修改原始方法的IL代码的方法。
  • 反射补丁 (Reverse Patch):允许调用私有方法作为公共的静态方法。
2025-09-29
C#
00

摘要

属性模式是C# 8.0中引入的一种新的模式匹配功能。它允许你根据对象的属性或字段进行模式匹配,这使得代码更加简洁和直观。属性模式特别适用于解构复杂对象,并基于这些对象的属性值进行条件判断。

正文

应用场景

属性模式可以在多种场景下使用,包括但不限于:

  1. 数据验证:在对象的状态需要根据其属性值进行验证时。
  2. 业务逻辑:在根据对象的不同属性值执行不同的业务逻辑时。
  3. 状态机:在基于对象状态的复杂逻辑中,根据对象的属性决定状态转移。
  4. UI逻辑:在UI编程中,根据数据对象的属性来决定显示逻辑。
2025-09-29
C#
00

摘要

在C#中,Thread.Sleep()Monitor.Wait()都是用于暂停当前线程的执行的方法,但它们的用途和行为有着本质的不同。了解这些差异对于编写高效且无错误的多线程程序至关重要。

正文

Thread.Sleep()

Thread.Sleep()是一个静态方法,用于暂停当前正在执行的线程指定的时间段。在这段时间内,线程不会执行任何操作。它只是简单地使当前线程进入阻塞状态,不进行任何CPU工作,直到指定的时间过去。

应用场景

  1. 简单的线程暂停:当你只需要暂停线程一段时间,而不需要在这段时间内进行任何同步操作。
  2. 轮询:如果你需要在检查某个条件之间进行短暂的暂停。

例子

2025-09-29
C#
00

摘要

在C#中,ToString()方法是一种常用的方式来格式化数字,使其以特定的格式显示。这种格式化可以应用于各种数值类型,如整数、浮点数和货币值。使用ToString()方法可以帮助我们更好地展示数据,使其更易读,更符合本地化标准,或满足特定的格式要求。

正文

应用场景

数字格式化在以下场景中非常有用:

  1. 货币表示:显示不同国家和地区的货币格式。
  2. 百分比显示:将数字转换为百分比形式。
  3. 自定义数字格式:根据需求自定义数字的显示方式。
  4. 科学计数法表示:对于非常大或非常小的数值,使用科学计数法。
  5. 固定小数点表示:特定小数位数的表示,常用于财务报告。