2014-09-03 4 views
2

누구나 CLR이 정적 클래스를 처리하는 방법을 설명 할 수 있습니까? CLR은 내부적으로 정적 클래스를 처리하기 위해 하나의 싱글 톤 인스턴스를 생성합니까? 그렇지 않다면 C#에서 정적 생성자를 사용하는 이유는 무엇입니까? (내 이해에 따라 클래스를 인스턴스화하는 데만 생성자를 사용합니다.)CLR은 정적 클래스를 어떻게 처리합니까?

답변

3

먼저 CLR에는 정적 클래스가 없습니다. CLR은 정적 클래스에 대해 아무것도 모릅니다. C#의 기능입니다.

정적 클래스는 abstractsealed 클래스로 컴파일됩니다. 그것을 abstract으로 만들면 인스턴스화를 방지하고 sealed은 상속을 방지합니다.

정적 클래스는 특별하지 않으며 모든 멤버가 정적 인 단순한 클래스입니다.

CLR은 내부적으로 정적 인 클래스를 처리하기 위해 하나의 싱글 톤 인스턴스를 만듭니다.

아니요은 추상적이어서 인스턴스화 할 수 없습니다.

왜 우리는 C#에서 정적 생성자를 가지고 있지 않습니까?

유형이 처음 참조되거나 인스턴스화 될 때 정적 생성자가 호출됩니다. 이 클래스의 정적 멤버를 초기화하는 데 사용됩니다.

When is a static constructor called in C#?

1

static 생성자는 형식을 처음 참조 할 때 호출됩니다. static 생성자를 가지려면 static 클래스 일 필요는 없습니다.

CLR은 static 클래스의 단독 인스턴스를 만들지 않습니다. 그들은 초기화 된 후에도 메모리에 static 변수를 유지합니다.

+0

"정적 생성자를 구축 싶어합니까? 그것은 정적 생성자 일 필요는 없습니다." - (PC) 올해 12 월 영화관에서 얼어 붙었다. –