博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 两行代码实现 延迟加载的单例模式(线程安全)
阅读量:6528 次
发布时间:2019-06-24

本文共 1287 字,大约阅读时间需要 4 分钟。

关键代码第4,5行。

很简单的原理不解释:readonly + Lazy(.Net 4.0 + 的新特性)

1     public class LazySingleton 2     { 3         //Lazy singleton 4         private LazySingleton() { Console.WriteLine("Constructing"); } 5         private static readonly Lazy
Linstance = new Lazy
(() => { return new LazySingleton(); }); 6 7 //not lazy Singleton 8 //public static readonly LazySingleton instance = new LazySingleton(); 9 10 public String Name { get; set; }11 public static LazySingleton Instance { get { return Linstance.Value; } }12 13 //For test14 public static bool IsValueCreated { get { return Linstance.IsValueCreated; } }15 }16 17 public class LazySingletonDemo18 {19 public static void Execute()20 {21 Task.Run(() => Foo1());22 //Thread.Sleep(1000);23 Task.Run(() => Foo1());24 Task.Run(() => Foo1());25 26 }27 28 public static void Foo1()29 {30 if (!LazySingleton.IsValueCreated)31 Console.WriteLine("LazySingleton is not initialized");32 33 LazySingleton.Instance.Name = "HK";34 35 Console.WriteLine(LazySingleton.Instance.Name);36 }37 }

测试结果:

 

转载地址:http://ixtbo.baihongyu.com/

你可能感兴趣的文章
Cocos2d-x3.2 文字显示
查看>>
估计下星期就能考科目二了
查看>>
20 Useful Commands for Linux Newbies
查看>>
轻松实现localStorage本地存储和本地数组存储
查看>>
mongodb group
查看>>
python+selenium自动化测试(二)
查看>>
(笔记 - 纯手敲)Spring的IOC和AOP 含GIT地址
查看>>
7-设计模式介绍
查看>>
让运维更高效:关于ECS系统事件
查看>>
J2EE分布式框架--单点登录集成方案
查看>>
跨域传递参数
查看>>
android 4.2的新特性layoutRtl,让布局自动从右往左显示
查看>>
iOS tableView 下拉列表的设计
查看>>
sharepoint 2010 属性编辑工具 SPCamlEditor 1.5.1
查看>>
linux下配置网络环境
查看>>
java Windows7 下环境变量设置
查看>>
NBU异构还原Oracle完整备份的一些总结
查看>>
freeBSD安装详细讲解
查看>>
WSFC2016 VM弹性与存储容错
查看>>
文档管理,文本编辑控件TX Text Control .NET for WPF
查看>>