ответ

3

The Lazy<T> инстанцируется анонимный метод следующим образом:

new Lazy<Singleton>(() => new Singleton()); 

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

код С # компилятор генерирует очень напоминает следующее:

Func<Singleton> factory = this.__compiler_generated_method; 
new Lazy<Singleton>(factory); 

private static Singleton __compiler_generated_method() 
{ 
    return new Singleton(); 
} 
+0

я вижу, поэтому нужно передать конструктор T в качестве анонимного метода конструктора '' Лазы Ondrej

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

  • Нет связанных вопросов^_^