"C# 고급 프로그래밍, 제4판"을 참조하세요.
· 정적 생성자를 작성하는 한 가지 이유는 클래스를 처음 사용하기 전에 외부 소스에서 초기화해야 하는 정적 필드나 속성이 클래스에 있기 때문입니다.
· 정적 생성자는 코드가 클래스를 참조하기 전에 최대 한 번 실행됩니다.
· 정적 생성자에는 액세스 한정자가 없으며 다른 C# 코드에서 호출되지 않으므로 public 및 private과 같은 액세스 한정자는 의미가 없습니다.
· 정적 생성자는 매개 변수를 사용할 수 없으며 클래스는 정적 생성자를 하나만 가질 수 있습니다.
· 정적 생성자는 인스턴스 멤버가 아닌 클래스의 정적 멤버에만 액세스할 수 있습니다.
아래에 예가 나와 있습니다.
공개 클래스 UserPreferences
{
공개 정적 읽기 전용 Color BackColor;
정적 사용자 환경 설정()
{
//아웃 소스에서 BackColor를 읽습니다.
}
// ...
}
클래스메인엔트리포인트
{
정적 무효 메인()
{
Console.WriteLine(UserPreferences.BackColor.ToString());
}
}
매개 변수가 없는 인스턴스 생성자는 클래스의 정적 생성자와 안전하게 공존할 수 있습니다. 매개변수 목록은 동일하지만 클래스가 로드될 때 정적 생성자가 실행되고, 인스턴스가 생성될 때 인스턴스 생성자가 실행되므로 모순이 없으므로 생성자 실행에 충돌이 발생하지 않습니다.
클래스 MyTempClass
{
공개 정적 정수 숫자 = 100;
정적 MyTempClass()
{
숫자 = 101;
}
}
수업 프로그램
{
정적 무효 Main(string[] args)
{
int x = MyTempClass.num;
Console.WriteLine();
}
}
위 프로그램에서 정적 생성자를 추가하지 않으면 x 값은 100입니다. 생성자를 추가하면 x 값은 101입니다.