回到目录

LazyInitializer.EnsureInitialized是frameworks4.0引入的新东西,实现对属性延时初始化的功能,它作用在System.Threading命名空间下,所以,它与多线程有着密切的关系,即当多人同步使用这个方法时,对存储的对象有着某种作用,这是msdn的相关说明:

这个方法可以用于多个执行者初始化Target目录对象。

在多个执行者同时存取这个方法的情况下,可能会建立多个T执行个体,但只有一个执行个体会存储至target。在些类情况下,这个方法将不会放置未储存的对象。如果这类对象必须被放置,则由呼叫端判断未使的对象,然后再对物件进行适当的放置。

对于概念不清楚的同步,没有关系,看下面的例子如完全明白了,呵呵

下面的实例介绍了对属性的两个初始化,并进行比较,延时初始化的好处,即在对象使用时再去初始化它当一个方法体中,如果一个对象初始化了一次,不要再进行重复的初始化工作。

代码1,展现了性能不好的情况

代码2,展现了优化的情况

代码3,微软为了我们进行了封装,在多线程中表现更好

代码1

  class TestLazyInitializer1
{ public People People
{
get
{ return new People(); }
} public void Print1()
{
Console.WriteLine(People.Name);
}
public void Print2()
{
Console.WriteLine(People.Name);
} }

代码2:

 class TestLazyInitializer2
{
People _people;
public People People
{
get
{ return _people == null
? (_people = new People())
: _people; }
} public void Print1()
{
Console.WriteLine(People.Name);
}
public void Print2()
{
Console.WriteLine(People.Name);
} }

代码3

 class TestLazyInitializer
{
private People _people;
/// <summary>
/// 延时初始化指定属性
/// </summary>
public People People
{
get
{
return LazyInitializer.EnsureInitialized(
ref _people, () =>
{
return new People();
});
}
} public void Print1()
{
Console.WriteLine(People.Name);
}
public void Print2()
{
Console.WriteLine(People.Name);
} }

而它们运行的结果,我们可想而知了,当一个类中多次使用同一个对象时,性能不好的,返回的Name(当前时间),肯定是不同的,而性能好的,只初始化一次的,返回的Name(当前时间)肯定是一个值,呵呵。

aaarticlea/png;base64,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" alt="" />

感谢阅读!

回到目录

基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化的更多相关文章

  1. WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对

    WPF MVVM UI分离之<交互与数据分离>   在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...

  2. 基础才是重中之重~ConcurrentDictionary让你的多线程代码更优美

    回到目录 ConcurrentDictionary是.net4.0推出的一套线程安全集合里的其中一个,和它一起被发行的还有ConcurrentStack,ConcurrentQueue等类型,它们的单 ...

  3. 基础才是重中之重~关于ThreadStatic和Quartz的一点渊源

    回到目录 ThreadStatic ThreadStatic是C#里的一个特性,它可以让你的字段在一个线程里有效,但你不能控制这个字段在何时被回收,即如果声明一个int32的字段为ThreadStat ...

  4. 基础才是重中之重~lock和monitor的区别

    回到目录 Monitor的介绍 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中 ...

  5. 基础才是重中之重~Emit动态构建方法(参数和返回值)

    回到目录 对于Emit我们知道它的可以动态构建程序集,类型,方法,属性等,或者说只要手动使用C#创建的东西使用Emit也都可以动态创建它们,Emit由于它的特别之处,所以在很多领域得到了广泛的应用,像 ...

  6. 基础才是重中之重~方法override详解

    回到 目录 之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享. 方法的override,即方法的覆写或者重写 ...

  7. 基础才是重中之重~AutoMapper为已有目标对象映射

    回到目录 AutoMapper各位一定不会陌生,大叔之前的文章中也提到过,曾经也写过扩展方法,以方便程序开发人员去使用它,而在最近,大叔在一个API项目里,在一个POST请求由DTO对象为实体对象赋值 ...

  8. 基础才是重中之重~stream和byte[]的概念与转化

    回到目录 多看几篇 之所以写这篇文章完全是因为最近在研究FastDFS这个分布式的文件存储系统,当然这不是我第一次研究它了,就像我们去看一本书,我们不会只看一篇,而是一次次,一篇篇,每看一次会有新的收 ...

  9. 基础才是重中之重~理解linq中的groupby

    linq将大部分SQL语句进行了封装,这使得它们更加面向对象了,对于开发者来说,这是一件好事,下面我从基础层面来说一下GroupBy在LINQ中的使用. 对GroupBy的多字段分组,可以看我的这篇文 ...

随机推荐

  1. OD使用教程

    OD使用教程: 跳转指令.满足才能跳转成功  

  2. 完全用CSS实现的表格

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. android/ios js 启动apk

    1.在移动设备访问某个连接时时,如果本地安装了其应用客户端,则浏览器会调用本地客户端,没有安装则会跳转到下载页面,提示安装.刚好有这样的需求,网上参考了其他人的实现,大部分都是关于APK和本地js交互 ...

  4. linux环境下安装mongodb

    最近有用到mongodb,顺便找到了以前的指南,顺便写一篇随笔,以后或许有用到的地方. 第一步:下载mongodb的linux版本,mongodb-linux-x86_64-3.2.4.tgz(去官网 ...

  5. angular js 的 ng-keyup 监听 keydown keyup事件获取 keyCode

    参考这个页面.http://www.angularjshub.com/examples/eventhandlers/keyboardevents/ Html页面代码: <input ng-mod ...

  6. (转)Java中的static关键字解析

    转自http://www.cnblogs.com/dolphin0520/p/3799052.html 一.static关键字的用途 在<Java编程思想>P86页有这样一段话: “sta ...

  7. 【Visual Lisp】图元选择集专题

    图元选择集专题;;★★★01.选择集操作★★★(setq ss (ssadd));;创建一个空选择集(ssadd (car(entsel)) ss);;将点取的图元添加到ss选择集中,可以不用setq ...

  8. Xcode调用旧版本库出现Undefined symbols for architecture x86_64: ld: symbol(s) not found for architecture x86_64

    问题:Undefined symbols for architecture x86_64:   ld: symbol(s) not found for architecture x86_64 问题原因 ...

  9. [UE4]Animation Techniques used in Paragon部分翻译及索引

    视频地址:https://www.youtube.com/watch?v=1UOY-FMm-xo 主要内容:该视频由Paragon游戏制作者Laurent Delayen(Senior Program ...

  10. Oracle Blob 字段的模糊查询

    原文地址:http://blog.csdn.net/springk/article/details/6866248