Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 종료자(Finalizer)란 무엇일까? 개념과 선언 방법 총정리

C# 종료자(Finalizer)란?

C#에서 종료자(Finalizer)는 클래스의 인스턴스를 소멸시키기 위해 사용되는 특수한 멤버입니다. 종료자를 활용하면 객체가 소멸되기 전에 사용했던 리소스(파일 핸들, 네트워크 연결 등 비관리 리소스)를 해제하는 작업을 수행할 수 있습니다.

종료자는 가비지 컬렉터(GC)에 의해 자동으로 호출되므로, 개발자가 직접 호출할 수 없다는 점도 기억해 두어야 합니다.

종료자의 주요 특징

  • 클래스당 하나만 선언 가능 — 하나의 클래스에는 오직 하나의 종료자만 존재할 수 있습니다.
  • 상속 및 오버로드 불가 — 종료자는 상속하거나 오버로드할 수 없습니다.
  • 매개변수 없음 — 종료자에는 매개변수를 지정할 수 없습니다.
  • 자동 호출 — 종료자는 프로그래머가 아닌 런타임 환경에 의해 자동으로 호출됩니다.

종료자 선언 방법

C#에서 종료자는 소멸자(Destructor)와 동일한 형태로 선언합니다. 예를 들어 클래스 이름이 Demo라면, 해당 클래스의 종료자는 다음과 같이 작성합니다.

~Demo() {
    // 리소스 해제 코드
}

위 코드에서 볼 수 있듯이, 종료자는 클래스 이름 앞에 물결표(~) 기호를 붙여서 선언합니다. 접근 제한자를 가질 수 없고, 반환 타입도 없으며, 상속 체인에서 부모 클래스의 종료자가 먼저 호출된 후 자식 클래스의 종료자가 호출되는 순서로 실행됩니다.

마무리

종료자는 비관리 리소스 정리에 유용하지만, 가비지 컬렉션 시점을 예측하기 어렵기 때문에 성능에 영향을 줄 수 있습니다. 따라서 일반적으로는 IDisposable 인터페이스와 using 문을 활용한 명시적 리소스 해제를 우선적으로 고려하고, 종료자는 최후의 안전장치로 사용하는 것이 좋은 설계 습관입니다.