Когда один использовать статический класс или метод, когда же с # выделяет память для них?
Это не C#, который выделяет память, это базовая CLR. Вы также должны различать распределение памяти и фактическое Инициализация членов.
память памяти может случиться, когда программа (EXE, DLL) загружена в память. Это связано с тем, что в «типичной» реализации статические данные хранятся на так называемом сегменте data
. Это фиксированная часть памяти, предназначенная для хранения постоянных (с точки зрения времени выполнения) структур данных. Однако конкретная реализация может работать несколько иначе, хотя это должен быть какой-то статический сегмент data
, по меньшей мере содержащий указатели на другие структуры данных.
Инициализация происходит до первого доступа к классу.
И вообще ли оно освобождается?
№. Они являются статическими.
Бонус вопрос: Когда следует использовать статический элемент или класс?
Боковое примечание. Это не бонусный вопрос, а причина для закрытия вопроса, в основном основанного на мнениях.
При первом использовании этого класса. Он не освобождается. –
На вопрос о бонусе: используйте статический член или класс, когда вам это нужно. –
Он выделяет память во время компиляции, скорее всего. Но это действительно деталь реализации, а не то, о чем вам нужно беспокоиться. Какую проблему ты пытаешься решить? Почему это имеет значение? –