안녕하세요 제가 알기로는 클래스 내에 멤버들이
인스턴스 필드든 정적 필드든 생성자 스코프 진입 전에 기본값 또는 멤버 초기화 값으로 먼저 할당이 되는 것으로 알고 있었는데
선생님이 쓰신 댓글 중에 멤버 초기화 구문이 있으면 C# 컴파일러가 생성자 내에서 처리한다고 말씀하셔서요~
근데 MSDN 정적 생성자 관련 문서를 읽어보니 "정적 필드 이니셜라이저는 정적 생성자가 실행되기 직전에 실행됩니다"
라는 설명이 나와있던데 실제로는 이게 아니라
class A
{
public static int a = 7;
static A()
{
WriteLine(a);
}
}
이 구문이 컴파일 시에
class A
{
public static int a;
static A()
{
a = 7;
WriteLine(a);
}
}
이렇게 변환되는게 맞는 건가요?
감사드립니다^^
[최초 등록일: ]
[최종 수정일: 9/3/2022]