回到目录

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. shell脚本编译安装LAMP环境

    #filename lamp.sh#version Centos6.7;apache2.4.23;mariadb-5.5.40;php5.5.38#data 2016/09/28#mail 23853 ...

  2. vc中获取磁盘IO统计计数

    想知道进程读写磁盘的情况,可以获取当前进程或指定进程的IO计数. #include <Windows.h> int get_io_bytes(ULONGLONG * read_bytes, ...

  3. [Linux] xargs

    xargs 命令可以将一个命令的输出,作为另一个命令的输入! 这里听来好像是管道的功能,之所以有xargs是因为有的命令不知吃管道,这时xargs就派上用场了! 具体的方法是:前一个命令的输出会使用空 ...

  4. bzoj 3718

    题意:戳这里 思路:很容易发现对于一个车能否移动到最终的位置只要判断路径中得最大高度与自身高端之和是否>w即可. 那么就可以转化为逆序对得最大数问题..即对于每一辆车,判断有那些最初在他前面,而 ...

  5. HTML5-列表的使用

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. Mac环境下svn的使用

    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还 ...

  7. 如何向MyEclipse项目的文件夹中添加JSP页面?

    1.鼠标选中该文件夹:2.鼠标右键单击该文件夹,选择“new->file”菜单项,创建一个空白文件:3.将JSP页面的所有源代码全部复制到该文件4.单击工具栏的“保存”按钮

  8. HK一行所见闻

    香港一行 20多年来,未未去过HK,前段时间由于工作关系去了趟HK.感触良多. 一清早,福田过关,做火车,做地铁,一通到了目的地. 总结对那边的印象: 1,所有人都是粤语,包括工作交流.而且他们不怎么 ...

  9. Replication的犄角旮旯(八)-- 订阅与发布异构的问题

    <Replication的犄角旮旯>系列导读 Replication的犄角旮旯(一)--变更订阅端表名的应用场景 Replication的犄角旮旯(二)--寻找订阅端丢失的记录 Repli ...

  10. .NET Core也可以使用MongoDB了

    可能是由于.NET Core还不是正式版的缘故吧,MongoDB的官方Driver(http://mongodb.github.io/mongo-csharp-driver/)一直不支持.NET Co ...