정적 생성자는 액세스 한정자를 사용하지 않고 매개 변수를 갖지 않습니다.
정적 생성자는 첫 번째 인스턴스가 만들어지기 전이나 정적 멤버가 참조되기 전에 클래스를 초기화하기 위해 자동으로 호출됩니다.
정적 생성자는 직접 호출할 수 없습니다.
사용자는 프로그램에서 정적 생성자가 실행되는 시기를 제어할 수 없습니다.
정적 생성자는 일반적으로 클래스에서 로그 파일을 사용할 때 이 파일에 항목을 쓰기 위해 사용됩니다.
정적 생성자는 생성자에서 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 |