• 정적 생성자는 액세스 한정자를 사용하지 않고 매개 변수를 갖지 않습니다.

    • 정적 생성자는 첫 번째 인스턴스가 만들어지기 전이나 정적 멤버가 참조되기 전에 클래스를 초기화하기 위해 자동으로 호출됩니다.

    • 정적 생성자는 직접 호출할 수 없습니다.

    • 사용자는 프로그램에서 정적 생성자가 실행되는 시기를 제어할 수 없습니다.

    • 정적 생성자는 일반적으로 클래스에서 로그 파일을 사용할 때 이 파일에 항목을 쓰기 위해 사용됩니다.

    • 정적 생성자는 생성자에서 LoadLibrary 메서드를 호출할 수 있는 경우 비관리 코드에 대한 래퍼 클래스를 만들 때도 유용합니다.

    • 정적 생성자에서 예외를 throw하면 런타임은 다시 이 생성자를 호출하지 않으므로 해당 형식은 프로그램이 실행되는 응용 프로그램 도메인의 수명 동안 초기화되지 않은 상태로 남아 있게 됩니다.

  class test

    {

        public static test tt;

        

        static test()

        {

            Console.WriteLine("정적 생성자");

            tt = new test();

        }

        public test()

        {

            Console.WriteLine("생성자");

        }

    }


    class Program

    {

        static void Main(string[] args)

        {


1.  test asdf1 = new test();        //  기본 생성자가 불리기 이전에 static test() 정적 생성자가 한번 불린다


또는


2. test asdf = test.tt;  // 위 1. 구분을 주석처리했을때는 이 처럼 정적멤버 tt 가 참조 되기 이전에 static test()

 가 호출된다




reference

https://msdn.microsoft.com/ko-kr/library/windows/apps/xaml/k9x6w0hc(v=vs.100).aspx



반응형

'프로그래밍(Programming) > C#' 카테고리의 다른 글

확장메서드 public static class  (0) 2017.07.18
프로퍼티 value  (0) 2015.11.17
AssemblyInfo.cs  (0) 2015.11.11
객체 배열 new , new  (0) 2015.11.11
추상함수(abstract)  (0) 2015.11.11

+ Recent posts