Как CLR обрабатывает статические классы?

Кто-нибудь может объяснить, как CLR обрабатывает статические классы? Создает ли CLR один одноэлементный экземпляр для внутренней обработки статических классов? Если нет, то почему у нас есть статический конструктор в C#? (Насколько я понимаю, мы используем конструкторы только для создания экземпляров класса)

2 ответа

Решение

Во-первых, в CLR нет статического класса. CLR ничего не знает о статическом классе. Это особенность C#.

Статические классы компилируются в abstract так же как sealed учебный класс. Делая это abstract предотвратить его реализацию и sealed предотвращает наследование.

Статические классы не особенные, это просто простой класс со всеми членами static.

Является ли, CLR внутренне создает один единственный экземпляр для обработки статических классов?

Нет, это абстрактно и не может быть реализовано.

Если нет, то почему у нас есть статический конструктор в C#?

Статический конструктор будет вызываться при первом обращении к типу или его создании. Он используется для инициализации статических членов класса.

Когда вызывается статический конструктор в C#?

static конструктор вызывается при первом обращении к типу. Это не должно быть static класс, чтобы иметь static конструктор.

CLR не создает одноэлементный экземпляр static учебный класс. Это держит static переменные в памяти, хотя после того, как они инициализированы.

Другие вопросы по тегам