C#의 정적 클래스 초기화의 결정적 순서
C#의 정적 클래스 초기화 순서는 ECMA 사양에 명시되어 있습니다. 이 순서는 프로그램 동작의 일관성을 보장합니다.
ECMA-334에 따르면:
- 정적 필드 이니셜라이저가 존재하는 경우 해당 정적 생성자 바로 앞에서 실행됩니다.
- 정적 생성자가 없는 경우 이니셜라이저는 정적 필드를 사용하기 전에 구현에 따른 시간에 실행됩니다. 클래스.
- 정적 생성자의 실행은 클래스의 인스턴스가 생성되거나 정적 멤버가 참조될 때 트리거됩니다.
- Main 메서드가 있는 클래스에서 정적 생성자는 주요 메소드.
주어진 코드 샘플에서:
- A.X 참조 in Main은 A.X 초기화를 트리거합니다.
- A.X 초기화에는 B.X가 필요하므로 B.X 초기화를 시작합니다.
- B.X에는 기본값 7이 할당됩니다. 출력: "B.X = 7."
- 정적 B()가 호출되어 "B.X = 0."
- A.X는 B.X 1로 초기화되어 A.X = 1이 됩니다.
- Static A()가 호출되어 "A.X = 1"이 출력됩니다.
- 마지막으로, 메인은 "A = 1, B = 0"을 인쇄합니다.
The 표준에서는 일관성을 유지하기 위해 기본 상태의 변수 이니셜라이저가 있는 정적 필드를 관찰하는 것을 권장하지 않습니다.
위 내용은 C#은 정적 클래스 초기화에 대한 결정적 순서를 어떻게 보장합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!