Programming

C# 정적 생성자 | Static Constructor

DragonTory 2022. 9. 1. 12:19
반응형

C# 정적 생성자 | Static Constructor

 

코딩으로 하다 보면 클래스에 static 멤버를 사용 하여

데이터를 공유 하여 사용 할 때가 있다.

 

물론, 고정된 값을 사용 할 때도 있지만 

아래의 예제 처럼 해당 클래스나 정적 멤버가 호출 될 때 

값을 초기화 하거나 

클래스 인스턴스 생성 수에 상관 없이 

처음 한번 생성 될 때만 작업을 하고 싶을 때가 있다.

 

이럴 때 정적 생성자(Static Constructor)를 사용 하면 된다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
class SimpleClass
{
    // Static variable that must be initialized at run time.
    static readonly long baseline;
 
    // Static constructor is called at most one time, before any
    // instance constructor is invoked or member is accessed.
    static SimpleClass()
    {
        baseline = DateTime.Now.Ticks;
    }
}
cs

 

위의 예제는 프로그램 어딘가에서 만약 

Console.WriteLine( $" baseLine Time: {SimpleClass.baseLine}");

과 같이 SimpleClass.baseLine 을 호출 하면

이때 정적 생성자가 호출 되고 

 baseline = DateTime.Now.Ticks;

위 구문이 실행 되게 된다. 

 

Console.WriteLine( $" baseLine Time: {SimpleClass.baseLine}");

를 여러번 호출 해도 정적 생성자는 최초 한번만 호출 되기 때문에

출력 값은 항상 같은 결과를 보여 준다. 

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/static-constructors

 

정적 생성자 - C# 프로그래밍 가이드

C#의 정적 생성자는 정적 데이터를 초기화하거나 한 번만 수행되는 작업을 수행하며 첫 번째 인스턴스가 만들어지거나 정적 멤버가 참조되기 전에 실행됩니다.

docs.microsoft.com

 

반응형