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

C# 정적 클래스에서 인스턴스가 하나만 생성되었음을 증명하는 방법

C#에서 정적(static) 클래스는 프로그램 전체에서 단 하나의 복사본만 존재하며, 인스턴스를 생성할 수 없습니다. 이를 증명하는 가장 간단한 방법은 정적 변수를 활용해 값이 계속 유지·증가하는지 확인하는 것입니다.

핵심 개념

아래 예제에서는 정적 클래스 Demo를 만들고, 그 안에 정적 변수 count를 선언합니다.

정적 변수는 마치 전역 변수(global variable)처럼 동작합니다. 클래스의 인스턴스가 여러 개 생성되더라도 정적 멤버는 모든 인스턴스가 공유하는 단일 복사본이기 때문에, 값이 초기화되지 않고 계속 누적됩니다. 이 예제에서는 클래스의 인스턴스가 오직 하나만 존재하므로 count 값이 계속 증가하게 됩니다.

예제 코드

static class Demo{
    public static int count;
    static Demo(){
        System.Console.WriteLine("Static Constructor called");
    }
}
class Program{
    static void Main(){
        Demo.count++;
        Demo.count++;
        System.Console.WriteLine(Demo.count);
        Console.ReadKey();
    }
}

실행 결과

Static Constructor called
2

코드 설명

  • 정적 생성자(Static Constructor): 정적 클래스가 처음 사용되기 전에 자동으로 한 번만 호출됩니다. 실행 결과에서 "Static Constructor called"가 딱 한 번 출력되는 것으로, 정적 생성자가 중복 호출되지 않음을 확인할 수 있습니다.
  • count 값 증가: Main 메서드에서 Demo.count를 두 번 증가시켰으므로 최종 값은 2가 출력됩니다.
  • 단일 인스턴스 증명: 프로그램이 종료될 때까지 count 값이 유지되고, 정적 생성자가 한 번만 실행된다는 점이 곧 정적 클래스의 인스턴스가 하나만 존재함을 보여주는 증거입니다.

이처럼 정적 클래스는 인스턴스화할 수 없고, 컴파일러가 자동으로 private 생성자를 제공하기 때문에 프로그램 lifetime 동안 단일 복사본만 존재한다는 사실을 코드로 간단히 검증할 수 있습니다.