C#의 정적 변수 초기화
C#에서 정적 변수를 사용할 때는 초기화 시점을 이해하는 것이 중요합니다.
정적 변수의 타이밍 초기화
정적 변수는 다음과 같은 경우에 초기화됩니다.
-
정적 생성자가 있는 경우: 클래스에 정적 생성자가 있는 경우(정적 MyStaticConstructor()), 정적 변수는 정적 생성자를 처음 호출할 때 초기화됩니다.
-
아니요 정적 생성자: 정적 생성자가 없으면 유형이 메모리에 로드될 때 정적 변수가 초기화됩니다.
유형 로드 트리거
클래스 로딩은 다음을 통해 트리거됩니다.
- 인스턴스 생성 class
- 클래스의 정적 멤버 액세스
- 리플렉션을 사용하여 명시적으로 로드되는 클래스
추가 고려 사항
- .NET 4에서는 정적 변수 초기화가 더 "지연"되었습니다. 즉, 다음과 같은 경우에만 초기화됩니다.
- beforefieldinit 플래그가 설정된 경우 인스턴스 생성자가 호출되기 전에 정적 변수가 초기화됩니다. 이 플래그는 정적 생성자가 있으면 설정됩니다.
- 일관적인 동작을 보장하려면 특정 초기화 타이밍에 의존하지 않고 단순히 일반 코드 액세스를 통해 정적 변수를 초기화하는 것이 좋습니다.
자세한 내용과 포괄적인 설명은 원래 답변에 링크된 Jon Skeet의 기사를 참조하세요.
위 내용은 C#에서 정적 변수는 언제 초기화됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!