C#의 정적 클래스 초기화 순서는 결정적인가요?
C#의 정적 클래스 초기화 순서는 실제로 결정적입니다. ECMA-334 표준에 따르면:
초기화 순서 예
다음 코드를 고려하세요.
static class B { public static int X = 7; static B() { Console.WriteLine("B.X = " + X); X = A.X; Console.WriteLine("B.X = " + X); } } static class A { public static int X = B.X + 1; static A() { Console.WriteLine("A.X = " + X); } } static class Program { static void Main() { Console.WriteLine("A = {0}, B = {1}", A.X, B.X); } }
실행 순서
재배열 고려사항
클래스 A와 B를 재배치하더라도 A.X를 처음 사용할 때 초기화 체인이 트리거되기 때문에 초기화 순서는 동일하게 유지됩니다.
결론
정적 클래스 초기화 순서는 결정적이며 다음에 설명된 규칙을 따릅니다. ECMA-334 표준. 정적 멤버를 처음 사용하거나 인스턴스를 생성하면 초기화 프로세스가 시작되며, 이는 필드 이니셜라이저와 정적 생성자 순서대로 진행됩니다.
위 내용은 C#의 정적 클래스 초기화 순서를 예측할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!