정적 생성자(static constructor)는 첫 번째 인스턴스가 생성되기 전 또는 정적 멤버가 처음 참조되기 전에 자동으로 호출됩니다.
정적 생성자는 정적 데이터를 초기화하거나, 프로그램 전체에서 단 한 번만 수행하면 되는 특정 작업을 처리하는 데 사용됩니다.
C#에서는 하나의 클래스에 대해 정적 생성자를 오직 하나만 선언할 수 있습니다.
정적 생성자의 주요 특징
- 접근 제한자(access modifier)를 사용할 수 없으며, 매개변수도 가질 수 없습니다.
- 클래스(class)나 구조체(struct)에는 정적 생성자가 하나만 존재할 수 있습니다.
- 상속되거나 오버로드(overload)될 수 없습니다.
- 직접 호출할 수 없으며, 오직 공용 언어 런타임(CLR)에 의해서만 자동으로 호출됩니다.
즉, 개발자는 프로그램 내에서 정적 생성자가 실행되는 시점을 직접 제어할 수 없습니다. CLR이 필요한 시점을 판단하여 자동으로 호출하기 때문입니다.
예제 코드
class Program
{
// 정적 생성자 - 인스턴스 생성 전 또는 정적 멤버 참조 시 자동 호출
static Program()
{
// 초기화 코드 작성
}
static void Main()
{
Console.ReadLine();
}
}위 예제처럼 정적 생성자는 클래스 이름과 동일하게 선언하며, 별도의 호출 코드 없이도 CLR이 적절한 시점에 자동으로 실행해 줍니다.