2009-11-13 4 views
0

мне было интересно, когда я пишуIs Shared ReadOnly lazyloaded?

Shared ReadOnly Variable As DataType = New DataType()
Или же
Shared ReadOnly Variable As New DataType()

ли ленивым загружен или как экземпляр инициализируется?

Как насчет ReadOnly самостоятельно без общего доступа?

Пример: System.Type.Delimiter

ответ

2

Ни лениво загружен.

Они инициализируются при инициализации типа: статическая инициализация запускается при доступе к любому статическому члену или при первом создании экземпляра типа.

Пример, который вы упоминаете (System.Type.Delimiter), инициализируется Static Constructor.

+0

Когда я объявляю общий член readonly в обычном классе, когда он инициализируется? – Shimmy

+1

Инициализируется _no later_, чем любой метод класса (совместно используемый или экземпляр, включая специальные методы, такие как конструкторы). Он может быть инициализирован ранее в любое время по усмотрению. Если у вас есть статический инициализатор в классе, то гарантия очень сильная: инициализаторы для полей будут выполняться _allways_ в момент первого вызова любого метода класса (включая ctors). –

Смежные вопросы