CLR via C# 책을 보고 궁금한게 있어 질문글을 올립니다.
2부 6장 타입과 맴버의 기본, [정적 클래스]부분에 궁금한 것이 있습니다.
-
static 클래스가 IL로 봤을 경우 abstract sealed 속성이기 때문에 인스턴스를 할당할 수 없다는 것은 이해했습니다. 추상 클래스는 자체적으로 인스턴스를 가질 수 없기 때문입니다.
하지만 static int a = 3; 이런식으로 선언하면 IL로 그냥 static Int32가 나타납니다.
정의로 사용되는 static과 선언으로 사용되는 static이 다르게 동작하는건가요? -
정적 맴버가 인스턴스로 잡히는게 맞다면 최초 메모리할당은 어느시점에 이뤄지나요? 정적클래스로 정의한 객체에 맴버나 메소드를 최초로 사용하면 정적 생성자가 Lazy하게 호출되는 것은 확인했습니다. 생성자가 호출될때 인스턴스로 잡히는지, 아니면 프로그램 시작부터 인스턴스로 잡히는지 궁금합니다.
-
1번 질문과 답변이 겹칠 수는 있는데…이 챕터에 "이 키워드는 클래스에 대해서만 적용이 가능하고 값 타입에 대해서는 사용할 수 없는데,"라는 문장이 있는데 뜻이 정적 맴버로는 ‘선언은 가능’ 하지만 '정의는 불가능하다’는 뜻이 맞나요?
-
정적으로 선언된 값타입 맴버들이 인스턴스가 할당되는게 맞다면, 그 공간이 stack 영역에 할당되는 것이 맞나요?
정리한다고 정리해봤는데 좋은 질문인지는 잘 모르겠습니다…
요지 파악이 안되신다면 다시 말씀드리겠습니다.