본문 바로가기

C#

C# 정적 생성자(Static Constructor) 활용

정적 생성자는 클래스가 처음 사용될 때 단 한 번 실행되는 특별한 생성자입니다. 주로 정적 멤버를 초기화할 때 사용합니다.

1. 정적 생성자 기본 문법

class MyClass
{
    static int count;

    // 정적 생성자
    static MyClass()
    {
        count = 0;
        Console.WriteLine("정적 생성자 호출");
    }

    public MyClass()
    {
        count++;
        Console.WriteLine($"인스턴스 생성, count = {count}");
    }
}

2. 활용 예시

정적 생성자를 통해 복잡한 정적 멤버 초기화나 리소스 할당을 안전하게 수행할 수 있습니다.

class Config
{
    public static readonly Dictionary<string, string> Settings;

    static Config()
    {
        // 초기 설정 데이터 로딩
        Settings = new Dictionary<string, string>
        {
            { "AppName", "MyApp" },
            { "Version", "1.0.0" }
        };
        Console.WriteLine("설정 초기화 완료");
    }
}

3. 주의사항

  • 정적 생성자는 매개변수를 가질 수 없고, 형식마다 단 하나만 존재합니다.
  • 명시적으로 호출할 수 없으며, CLR이 클래스 최초 사용시 자동 호출합니다.
  • 멀티스레드 환경에서도 한 번만 실행되어 안전합니다.