当前位置: > 职场指南 > 面试试题 > 本文内容

程序员面试题精选100题(56)-C/C++/C#面试题(4)(8)

发布时间:2019-09-22整理:admin阅读:

 

    class Program

    {

        static void Main(string[] args)

        {

            Singleton1.Print();

            Singleton2.Print();

        }

    }

}

答案: 输出三行:第一行“Singleton1 constructed”,第二行“Singleton1 Print”,第三行“Singleton2 Print”

当我们调用Singleton1.Print时,.NET运行时会自动调用Singleton1的静态构造函数,并初始化它的静态变量。此时会创建一个Singleton1的实例,因此会调用它的构造函数Singleton2的实例是在Nested的静态构造函数里初始化的。只有当类型Nested被使用时,才回触发.NET运行时调用它的静态构造函数。我们注意到我们只在Sington2.Instance里面用到了Nested。而在我们的代码中,只调用了Singleton2.Print。因此不会创建Singleton2的实例,也不会调用它的构造函数

这两个类型其实都是单例模式(Singleton)的实现。第二个实现Singleton2只在真的需要时,才会创建实例,而第一个实现Singleton1则不然。第二个实现在空间效率上更好。

欢迎分享转载→ 程序员面试题精选100题(56)-C/C++/C#面试题(4)(8)

相关文章

用户评论

精品推荐

图文资讯

网站地图 - 辞职报告- 职场指南 - 实习总结 - 实习周记 - 实习鉴定- - 个人总结 - 主持词 - 工作计划