C#의 정적 클래스 초기화 순서는 결정적인가요?
C#에서는 정적 클래스를 처음 사용할 때 초기화됩니다. 그러나 여러 정적 클래스 간의 초기화 순서가 항상 명확한 것은 아닙니다. 이 문서에서는 C#에서 정적 클래스 초기화의 결정적 특성과 이것이 코드 실행에 어떤 영향을 미치는지 살펴봅니다.
결정적 초기화 순서
정적 클래스 초기화 순서는 제어됩니다. 다음 규칙을 따릅니다.
예
다음 코드를 고려하세요.
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.X가 Main에서 참조되면 정적 생성자가 실행됩니다. A.X는 B의 초기화를 트리거하는 B.X를 사용하여 초기화됩니다. 따라서 코드의 출력은 항상 다음과 같습니다.
A.X = 1 B.X = 7 B.X = 0 A = 1, B = 0
결론
정적 클래스 초기화 C#에서는 잘 정의된 순서를 따릅니다. 의도한 대로 작동하는 코드를 작성하려면 이 순서를 이해하는 것이 중요합니다. 위에 설명된 규칙을 준수함으로써 개발자는 여러 컴파일 및 실행에서도 정적 클래스가 올바르고 일관되게 초기화되도록 할 수 있습니다.
위 내용은 C#의 정적 클래스 초기화 순서는 결정적이라고 보장됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!