C#나 다른 대부분 객체지향언어는 객체가 생성될 때 초기화나 다른 일들을 할 수 있게 생성자를 작성할 수 있게 해줍니다. 그래서 클래스를 쓰는 입장에서는 새 객체를 만들기만 해도 그 객체의 접근가능한 변수나 속성들이 유효한 값을 갖고 있다고 생각할 수 있습니다. 하지만 정적 변수나 속성의 경우 선언과 동시에 하는 초기화도 제한이 있고, 객체를 만들기 전에 접근할 수 있기 때문에 원하는 값으로 미리 초기화하는 방법이 필요합니다. 정적 함수로 초기화 함수를 작성하여 클래스 사용전에 호출하는 방법도 있지만, 그 함수 호출을 빼먹을 위험성도 있습니다. 그래서 이 때 필요한게 static constructor인데요.. 사실 이미 자바에도 있는 내용입니다.. 문법까지 같은지는 기억은 안나지만.. 
 이 문법은

static 클래스명()
{
}
이렇고 접근제한자를 쓸 수 없고, 파라미터를 받을 수도 없습니다..

using System;
using System.Collections.Generic;

static class Program
{
    static Program()
    {
        IntList = new List<int>();
        IntList.Add(1);
        IntList.Add(3);
        IntList.Add(5);
    }
    public static List<int> IntList { get; private set; }

    static void Main()
    {
        foreach (int i in IntList)
        {
            Console.WriteLine(i);
        }
    }
}
Posted by orange code

티스토리 툴바