C# 析构函数

在 C# 中,析构函数(终结器)用于在类的作用域结束时销毁类的对象。它的名称与类名相同,并以波浪号~开头。例如,

class Test {
  ...
  //destructor
  ~Test() {
    ...
  }
}

这里,~Test()是析构函数。


示例 1:C# 析构函数的工作原理

using System;  
namespace CsharpDestructor {
  
  class Person {

    public Person() {
      Console.WriteLine("Constructor called.");
    }
    
    // destructor
~Person() { Console.WriteLine("Destructor called."); }
public static void Main(string [] args) { //creates object of Person Person p1 = new Person(); } } }

输出

Constructor called.
Destructor called.

在上面的示例中,我们在 Person 类中创建了一个析构函数 ~Person

当我们创建 Person 类的对象时,会调用构造函数。在对象的作用域结束之后,对象 p1 不再需要。因此,析构函数会被隐式调用,从而销毁对象 p1


示例 2:C# 析构函数

using System;  
namespace CsharpDestructor {
  
  class Person {

    string name;

    void getName() {
      Console.WriteLine("Name: " + name);
    }

// destructor ~Person() { Console.WriteLine("Destructor called."); }
public static void Main(string [] args) { // creates object of Person Person p1 = new Person(); p1.name = "Ed Sheeran"; p1.getName(); } } }

输出

Name: Ed Sheeran
Destructor called.

析构函数的特点

C# 析构函数有一些重要的特点。它们如下:

  • 一个类只能有一个析构函数。
  • 析构函数不能有访问修饰符、参数或返回类型。
  • .NET 框架的垃圾回收器会隐式调用析构函数。
  • 我们不能重载或继承析构函数。
  • 我们不能在结构体中定义析构函数。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战