C#에서 소멸자(Destructor)는 클래스의 특별한 메서드로, 클래스 내부에서 객체 또는 인스턴스를 소멸시키는 역할을 담당합니다.
한 클래스 안에는 소멸자를 단 하나만 선언할 수 있습니다.
C# 소멸자의 주요 특징
소멸자는 어떠한 매개변수도 받지 않습니다.
소멸자 이름은 물결표(~) 기호로 시작합니다.
소멸자(~)는 구조체(Struct)에는 정의할 수 없습니다.
소멸자는 직접 호출할 수 없으며, 자동으로 호출됩니다.
소멸자는 객체의 기본 클래스에 대해 Finalize를 암묵적으로 호출합니다.
소멸자 예제 코드
class Demo{
~Demo(){ // 종료자(Finalizer)
// 정리(cleanup) 문...
}
}
class Program{
static void Main(){
Console.ReadLine();
}
}종료자(finalizer)는 객체의 기본 클래스에 대해 Finalize를 암묵적으로 호출합니다. 따라서 종료자 호출은 내부적으로 아래와 같은 코드로 암묵적으로 변환됩니다.
protected override void Finalize(){
try{
// 정리(cleanup) 문...
}
finally{
base.Finalize();
}
}프로그래머는 종료자가 언제 호출될지 직접 제어할 수 없습니다.
만약 하나의 클래스에 두 개 이상의 소멸자를 선언하면 컴파일러는 다음과 같은 오류를 발생시킵니다.
'Demo' already defines a member called '~Demo'
class Demo{
~Demo(){
}
~Demo(){
}
}
class Program{
static void Main(){
Console.ReadKey();
}
}