System.Lazy <T>如何访问T的私有构造函数?

翁德里

我已根据使用此页面实现了单例System.Lazy<T>

我想知道,System.Lazy<T>构造函数的访问修饰符为时,如何从技术上访问的构造T函数private

史蒂文

Lazy<T>与一个匿名方法实例如下:

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

匿名方法只是位于定义它们的类中的私有方法。由于这是类中的方法,因此它被允许访问该类的任何其他私有成员,包括私有构造函数。

C#编译器生成的代码与以下代码非常相似:

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章