2011-01-19 10 views
3

만약 내가 이런 유형 :정적 필드/속성 초기화

public struct Effect 
{ 
    public int Value { get; set; } 

    public static int MinValue = Int32.MinValue; 
} 
겠습니까 그냥 정적 생성자의 실행처럼 한 번만 초기화 할 수 MinValue

? 또는 정적 생성자 내에서 MinValue을 초기화해야합니까?

classes에 대해 다른 내용이 있습니까?

답변

3

정확히 한 번만 실행되지만, 정적 생성자 인 것처럼 은 꽤이 아닙니다. 형식 초기화 프로그램이 실행될 때의 규칙은 different when a type has a static constructor입니다. 관찰 된 동작은 changed a bit in .NET 4.0입니다. 보통 당신은 그것에 대해 걱정할 필요가 없습니다.

내가 아는 한 클래스와 구조체간에 형식 초기화에는 차이가 없습니다.

MinValue 필드는 공개이고 쓰기 가능입니다. 그것은 나쁜 생각처럼 보입니다.

+0

감사합니다. Jon, 내 게시물을 오랫동안 보지 못했습니다. .NET 4.0에 대해 실제로 컴파일합니다. 맞습니다. MinValue를 쓰기 가능하도록 만드는 것은 의도적 인 것이 아닙니다. –

4

예, 정적 생성자 실행 전에 정확히 한 번 초기화됩니다. 참조 유형 (클래스)과 동일합니다.

4

예, 프로세스 (앱 도메인) 당 한 번만 초기화됩니다.

관련 문제