누구나 CLR이 정적 클래스를 처리하는 방법을 설명 할 수 있습니까? CLR은 내부적으로 정적 클래스를 처리하기 위해 하나의 싱글 톤 인스턴스를 생성합니까? 그렇지 않다면 C#에서 정적 생성자를 사용하는 이유는 무엇입니까? (내 이해에 따라 클래스를 인스턴스화하는 데만 생성자를 사용합니다.)CLR은 정적 클래스를 어떻게 처리합니까?
2
A
답변
3
먼저 CLR에는 정적 클래스가 없습니다. CLR은 정적 클래스에 대해 아무것도 모릅니다. C#의 기능입니다.
정적 클래스는 abstract
및 sealed
클래스로 컴파일됩니다. 그것을 abstract
으로 만들면 인스턴스화를 방지하고 sealed
은 상속을 방지합니다.
정적 클래스는 특별하지 않으며 모든 멤버가 정적 인 단순한 클래스입니다.
CLR은 내부적으로 정적 인 클래스를 처리하기 위해 하나의 싱글 톤 인스턴스를 만듭니다.
아니요은 추상적이어서 인스턴스화 할 수 없습니다.
왜 우리는 C#에서 정적 생성자를 가지고 있지 않습니까?
유형이 처음 참조되거나 인스턴스화 될 때 정적 생성자가 호출됩니다. 이 클래스의 정적 멤버를 초기화하는 데 사용됩니다.
1
static
생성자는 형식을 처음 참조 할 때 호출됩니다. static
생성자를 가지려면 static
클래스 일 필요는 없습니다.
CLR은 static
클래스의 단독 인스턴스를 만들지 않습니다. 그들은 초기화 된 후에도 메모리에 static
변수를 유지합니다.
"정적 생성자를 구축 싶어합니까? 그것은 정적 생성자 일 필요는 없습니다." - (PC) 올해 12 월 영화관에서 얼어 붙었다. –