오진이 블로그

[제프리 리처의 CLR via C#] 타입 생성자 본문

Development/C#

[제프리 리처의 CLR via C#] 타입 생성자

오늘도 진이 2021. 9. 2. 18:05

2부. 타입 설계

8장. 메서드

타입 생성자

  • CLR은 타입 생성자(혹은 정적 생성자, 클래스 생성자, 타입 초기자 등으로로 불린다)를 지원한다.
  • 인스턴스 생성자는 인스턴스의 초기 상태를 설정하기 위해서 사용되고, 타입 생성자는 타입의 초기 상태를 설정하기 위해서 사용하게 된다.
  • 타입은 내부적으로 사용하는 기본 타입 생성자가 따로 없다. 만약 타입 생성자를 정의해야 하는 경우라면 타입당 하나만 정의할 수 있으며 매개변수를 가질 수 없다.
  • static 키워드를 사용해서 정의해야 한다.
  • 타입 생성자는 반드시 private이어야 하는데, C#이 자동으로 private을 붙여준다.
  • 타입 생성자는 반드시 private으로 선언되어 다른 개발자들이 작성된 코드에 의하여 임의로 호출되지 않도록 보호되어야 하며, CLR은 이와 무관하게 항상 타입 생성자를 자유롭게 호출할 수 있다.
  • JIT 컴파일러가 메서드를 컴파일할 떄면, 메서드 내의 코드가 어떤 타입들을 참조하는지 확인한다.
  • CLR이 타입 생성자를 앱도메인당 한 번씩만 실행하도록 다중 스레드에 안전함(Thread-Safe)을 보증하기 떄문에, 타입 생성자는 타입이 필요로 하는 싱글톤(Singleton) 객체를 최적화하기에 최적의 위치라고 할 수 있다.

 

Comments