代码抽离 (Code Extraction)
核心概念: 随着程序功能的增加,如果所有代码都写在 `Program.cs` 或同一个文件中,代码会变得非常臃肿、难以维护。 代码抽离就是将不同功能的代码提取出来,放入单独的类(Class)或单独的项目(类库 DLL)中。
创建一个次类
在同一个项目中,我们可以通过添加新的类文件来分离代码。
操作步骤:
- 在“解决方案资源管理器”中,右键点击项目名称(例如 `HelloWorldCS`)。
- 选择 添加 (Add) → 类 (Class)。
- 输入类名(例如 `InfoDisplay.cs`),点击确定。
using System; namespace CodeExtraction { // 定义一个次类 (Sub-class) // 注意:类必须是 public 的,才能被其他地方访问 public class InfoDisplay { // 定义一个方法 // 3个参数的示例方法 public void Show_MAX_Pipou(string a1, string a2, string a3) { Console.WriteLine("参数1: " + a1); Console.WriteLine("参数2: " + a2); Console.WriteLine("参数3: " + a3); } } }
主类中调用次类
在主程序(`Program.cs`)中,要使用上面创建的类,通常需要实例化(创建对象)。
关键点:
- 必须确保主类和次类在同一个命名空间下,或者使用 `using` 引用了次类的命名空间。
- 使用 `new` 关键字创建对象。
using System; namespace CodeExtraction { class Program { static void Main(string[] args) { string a1 = "23", a2 = "25", a3 = "27"; // 1. 实例化对象 (创建一个英雄叫雷神) // 语法:类名 变量名 = new 类名(); InfoDisplay LeiShen = new InfoDisplay(); // 2. 调用次类中的方法 LeiShen.Show_MAX_Pipou(a1, a2, a3); Console.ReadKey(); } } }
主类中直接使用次类变量 (Static)
如果次类中的变量或方法被 `static` (静态) 关键字修饰,则在主类中无需实例化,可以直接通过类名点出来使用。
次类修改:
public class InfoDisplay { // 定义一个静态变量 // static 意味着这个变量属于“类”本身,而不是某个“对象” public static int num; // 中间缓存 (非静态变量可以使用静态变量) int num1 = num; // ... 其他方法 }
主类调用:
class Program { static void Main(string[] args) { // 直接使用子类的变量,无需 new InfoDisplay() InfoDisplay.num = 1000; Console.WriteLine("静态变量值: " + InfoDisplay.num); } }
文件 [程序打包引用]
概念类比: DLL (Dynamic Link Library) 文件类似于 PLC 编程中的 FB块 (功能块) 封装。
- 你将一段逻辑写好、封装起来。
- 导出成一个文件 (.dll)。
- 其他程序导入这个文件,就可以直接使用里面的功能,而不需要知道里面的源代码。
注意: DLL 文件本质就是类库文件。 在编写类库时,类 (class) 和 字段/方法 前面必须加 `public`,否则外部程序无法访问。
创建类库文件及程序
操作步骤:
- 打开 Visual Studio,新建项目。
- 选择 类库 (.NET Core) 或 类库 (.NET Framework) (Class Library)。
- 命名项目(例如 `DllTestDemo`)。
100-4-2:编译生成 DLL 文件
编写好类库代码后,需要编译生成 `.dll` 文件。
类库代码示例 (Class1.cs):
using System; namespace DllTestDemo // 保持命名空间与项目名一致,方便识别 { public class Class1 { // 一个计算方法示例 public int Jishuan(int a, int b, int g) { return a + b + g; } } }
生成步骤:
- 在顶部菜单栏点击 生成 (Build) → 生成解决方案 (Build Solution)。
- 成功后,进入项目文件夹:`bin` → `Debug` → `netcoreappX.X` (或 netframework)。
- 找到生成的 `DllTestDemo.dll` 文件。
主程序添加引用 DLL 文件
如果一个项目使用了 DLL 文件,单独把生成的 `.exe` 放到桌面是不能运行的,必须把 `.dll` 和 `.exe` 放在一起。
引用步骤:
- 打开你的主程序项目(控制台应用程序)。
- 在“解决方案资源管理器”中,右键点击 依赖项 (Dependencies) 或 引用 (References)。
- 选择 添加引用 (Add Reference) → 浏览 (Browse)。
- 找到刚才生成的 `DllTestDemo.dll` 文件并添加。
主程序代码调用:
using System; // 这里的命名空间通常与你的主程序一致 namespace TestDllUsage { class Program { static void Main(string[] args) { // 使用 DLL 文件名(命名空间) + 类名 来实例化对象 // 这里的 DllTestDemo 是 DLL 项目的命名空间 DllTestDemo.Class1 DD = new DllTestDemo.Class1(); int a = 5, b = 3, g = 5; // 调用 DLL 中的方法 int kar = DD.Jishuan(a, b, g); Console.WriteLine("计算结果: " + kar); Console.ReadKey(); } } }
评论