C# 单例模式的两种简易写法

记录一下,以防遗忘

 

 1 /// <summary>
 2     /// 饿汉式声明 静态构造函数执行时就立即实例化
 3     /// </summary>
 4     public class SingleInstance
 5     {
 6         /// <summary>
 7         /// 私有构造函数
 8         /// </summary>
 9         private SingleInstance()
10         {
11         }
12 
13         //注意,为了确保单例性,需要使用 readonly 关键字声明实例不能被修改。
14         private static readonly SingleInstance _instance = new SingleInstance();
15 
16         public static SingleInstance Instance => _instance;
17     }
18 
19     /// <summary>
20     /// 懒汉式声明 程序执行过程中第一次需要时再实例化
21     /// </summary>
22     public class LazySingleInstance
23     {
24         /// <summary>
25         /// 私有构造函数
26         /// </summary>
27         private LazySingleInstance()
28         {
29         }
30 
31         //使用 Lazy<T> 可以使对象的实例化延迟到第一次被调用的时候执行,
32         //通过访问它的 Value 属性来创建并获取实例,
33         //并且读取一个 Lazy<T> 实例的 Value 属性只会执行一次实例化代码,确保了线程安全。
34         private static readonly Lazy<LazySingleInstance> _instance = new Lazy<LazySingleInstance>(() => new LazySingleInstance());
35 
36         public static LazySingleInstance Instance => _instance.Value;
37     }

 

posted @ 2021-07-27 11:09  只吃肉不喝酒  阅读(121)  评论(0编辑  收藏  举报