C# 编程指南:构造函数和析构函数

在C#中,构造函数和析构函数是用于对象的初始化和清理的特殊成员方法。

部分
1
构造函数(Constructor)
构造函数具有与类相同的名称,并且在创建类的实例时自动调用。
构造函数用于初始化类的成员变量和执行必要的设置。
可以定义多个构造函数,通过参数列表的不同来实现构造函数的重载。
class Person
{
    private string name;
    private int age;

    // 默认构造函数
    public Person()
    {
        name = "Unknown";
        age = 0;
    }

    // 带参数的构造函数
    public Person(string name, int age)
    {
        this.name = name;
        this.age = age;
    }
}
部分
2
析构函数(Destructor)
析构函数用于在对象销毁之前执行清理操作。
析构函数的名称与类的名称相同,但在名称前加上波浪线(~)作为前缀。
一个类只能有一个析构函数,并且不能被重载或带参数。
class MyClass
{
    ~MyClass()
    {
        // 执行清理操作
    }
}
部分
3
构造函数的调用
使用 new 关键字创建类的实例时,会自动调用适当的构造函数进行对象的初始化。
Person person1 = new Person(); // 调用默认构造函数
Person person2 = new Person("John", 25); // 调用带参数的构造函数
部分
4
析构函数的调用
析构函数的调用是由垃圾回收器自动处理的,无法手动触发。
垃圾回收器负责在对象不再被引用时自动销毁对象,并在销毁之前调用析构函数。
MyClass obj = new MyClass();
obj = null; // 设置对象为 null,使其不再被引用
// 在适当的时候,垃圾回收器将自动调用析构函数
部分
5
使用析构函数进行资源清理
析构函数通常用于释放非托管资源,如文件句柄、数据库连接等。
在析构函数中执行资源清理的操作,可以确保资源被正确释放,避免资源泄漏。
class FileHandler
{
    private IntPtr fileHandle;

    public FileHandler(string filePath)
    {
        fileHandle = OpenFile(filePath);
    }

    ~FileHandler()
    {
        CloseFile(fileHandle);
    }

    private IntPtr OpenFile(string filePath)
    {
        // 打开文件,返回文件句柄
    }

    private void CloseFile(IntPtr handle)
    {
        // 关闭文件
    }
}
    目录

  • 1.
    构造函数(Constructor)
  • 2.
    析构函数(Destructor)
  • 3.
    构造函数的调用
  • 4.
    析构函数的调用
  • 5.
    使用析构函数进行资源清理