目录

代码抽离 (Code Extraction)

核心概念: 随着程序功能的增加,如果所有代码都写在 `Program.cs` 或同一个文件中,代码会变得非常臃肿、难以维护。 代码抽离就是将不同功能的代码提取出来,放入单独的类(Class)或单独的项目(类库 DLL)中。

创建一个次类

在同一个项目中,我们可以通过添加新的类文件来分离代码。

操作步骤:

  1. 在“解决方案资源管理器”中,右键点击项目名称(例如 `HelloWorldCS`)。
  2. 选择 添加 (Add)类 (Class)
  3. 输入类名(例如 `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 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 文件本质就是类库文件。 在编写类库时,类 (class)字段/方法 前面必须加 `public`,否则外部程序无法访问。

创建类库文件及程序

操作步骤:

  1. 打开 Visual Studio,新建项目。
  2. 选择 类库 (.NET Core)类库 (.NET Framework) (Class Library)。
  3. 命名项目(例如 `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;
        }
    }
}

生成步骤:

  1. 在顶部菜单栏点击 生成 (Build)生成解决方案 (Build Solution)
  2. 成功后,进入项目文件夹:`bin` → `Debug` → `netcoreappX.X` (或 netframework)。
  3. 找到生成的 `DllTestDemo.dll` 文件。

主程序添加引用 DLL 文件

如果一个项目使用了 DLL 文件,单独把生成的 `.exe` 放到桌面是不能运行的,必须把 `.dll` 和 `.exe` 放在一起。

引用步骤:

  1. 打开你的主程序项目(控制台应用程序)。
  2. 在“解决方案资源管理器”中,右键点击 依赖项 (Dependencies)引用 (References)
  3. 选择 添加引用 (Add Reference)浏览 (Browse)
  4. 找到刚才生成的 `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();
        }
    }
}