정태 구조 함수를 말하다

1849 단어

정적 구조 함수


정적 구조 함수는 정적 데이터를 초기화하거나 한 번만 수행할 수 있는 작업을 수행하는 데 사용됩니다.정적 구조 함수는 클래스 대상이 처음 실례화될 때나 정적 구성원이 호출될 때 자동으로 호출되어 실행됩니다.
예를 들어 아래의 이 코드는 다음과 같다.
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;
    }
}

또 다른 예는 우리가 자주 사용하는 단례 모델이다. 단열 모델의 클래스는 하나의 실례만 있기 때문에 실례화하기 전에 초기화된 코드를 실행한다. 우리는 아래의 코드로 설명할 수 있다.
public sealed class ClassicSingleton
{
    private static ClassicSingleton instance;
    private static object syncRoot = new Object();

    private ClassicSingleton() { }

    public static ClassicSingleton Instance
    {
        get
        {
            if (instance == null)
            {
                lock (syncRoot)
                {
                    if (instance == null)
                    {
                        ...custom code
                        instance = new ClassicSingleton();
                    }
                }
            }

            return instance;
        }
    }
}

여기에서 우리는 lock 키워드를 통해 다중 루틴 환경에서 클래스도 하나의 실례만 있을 수 있도록 보장해야 한다.정적 구조 함수를 사용하면 우리는 더욱 간단하고 실현 가능한 버전을 얻을 수 있다.
public sealed class Singleton
{
    private static Singleton instance;

    private Singleton() { }

    static Singleton()
    {
        ...custom code
        instance = new Singleton();
    }

    public static Singleton Instance
    {
        get
        {
            return instance;
        }
    }
}

우리는 실례를 만드는 코드를 잠그기 위해 lock을 사용할 필요가 없고,if문장도 없어서 코드가 더욱 간결해졌다.
전재 대상:https://www.cnblogs.com/EasonWu/p/static-constructor-csharp.html

좋은 웹페이지 즐겨찾기