在 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 框架的垃圾回收器会隐式调用析构函数。
- 我们不能重载或继承析构函数。
- 我们不能在结构体中定义析构函数。