Krishna Veni Ответов: 1

Статические члены инициализируются или вызываются во время компиляции или во время выполнения ? а те статические элементы, которые хранятся в куче или стеке ?


у нас есть два типа членов в c#

1.статические члены
2.члены экземпляра


когда класс загружается в то время, когда статические члены интернализуются или вызываются либо во время компиляции, либо во время выполнения?

а также те статические члены, которые хранятся в куче или стеке?

Что я уже пробовал:

когда класс загружается в то время, когда статические члены интернализуются или вызываются либо во время компиляции, либо во время выполнения?

а также те статические члены, которые хранятся в куче или стеке?

Krishna Veni

пожалуйста, помогите мне

1 Ответов

Рейтинг:
2

OriginalGriff

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

Стек или куча? Куча. Подумайте об этом: существует только один статический объект, а стеков столько же, сколько потоков. Единственное место, где может находиться статический объект, - это куча, и на него ссылаются через объект типа для скомпилированного класса (который используется, помимо прочего, для отслеживания наследования), так что он никогда не собирается мусором до тех пор, пока не будет выгружен домен приложения.