>백엔드 개발 >C++ >C#에서 정적 변수는 언제 초기화됩니까?

C#에서 정적 변수는 언제 초기화됩니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-02 21:26:401024검색

When Are Static Variables Initialized in C#?

C#의 정적 변수 초기화

C#에서 정적 변수를 사용할 때는 초기화 시점을 이해하는 것이 중요합니다.

정적 변수의 타이밍 초기화

정적 변수는 다음과 같은 경우에 초기화됩니다.

  • 정적 생성자가 있는 경우: 클래스에 정적 생성자가 있는 경우(정적 MyStaticConstructor()), 정적 변수는 정적 생성자를 처음 호출할 때 초기화됩니다.
  • 아니요 정적 생성자: 정적 생성자가 없으면 유형이 메모리에 로드될 때 정적 변수가 초기화됩니다.

유형 로드 트리거

클래스 로딩은 다음을 통해 트리거됩니다.

  • 인스턴스 생성 class
  • 클래스의 정적 멤버 액세스
  • 리플렉션을 사용하여 명시적으로 로드되는 클래스

추가 고려 사항

  • .NET 4에서는 정적 변수 초기화가 더 "지연"되었습니다. 즉, 다음과 같은 경우에만 초기화됩니다.
  • beforefieldinit 플래그가 설정된 경우 인스턴스 생성자가 호출되기 전에 정적 변수가 초기화됩니다. 이 플래그는 정적 생성자가 있으면 설정됩니다.
  • 일관적인 동작을 보장하려면 특정 초기화 타이밍에 의존하지 않고 단순히 일반 코드 액세스를 통해 정적 변수를 초기화하는 것이 좋습니다.

자세한 내용과 포괄적인 설명은 원래 답변에 링크된 Jon Skeet의 기사를 참조하세요.

위 내용은 C#에서 정적 변수는 언제 초기화됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.