核心概念: 随着程序功能的增加,如果所有代码都写在 `Program.cs` 或同一个文件中,代码会变得非常臃肿、难以维护。 代码抽离就是将不同功能的代码提取出来,放入单独的类(Class)或单独的项目(类库 DLL)中。
在同一个项目中,我们可以通过添加新的类文件来分离代码。
操作步骤:
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 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` (静态) 关键字修饰,则在主类中无需实例化,可以直接通过类名点出来使用。
次类修改:
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 文件本质就是类库文件。 在编写类库时,类 (class) 和 字段/方法 前面必须加 `public`,否则外部程序无法访问。
操作步骤:
编写好类库代码后,需要编译生成 `.dll` 文件。
类库代码示例 (Class1.cs):
using System; namespace DllTestDemo // 保持命名空间与项目名一致,方便识别 { public class Class1 { // 一个计算方法示例 public int Jishuan(int a, int b, int g) { return a + b + g; } } }
生成步骤:
如果一个项目使用了 DLL 文件,单独把生成的 `.exe` 放到桌面是不能运行的,必须把 `.dll` 和 `.exe` 放在一起。
引用步骤:
主程序代码调用:
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(); } } }