zoukankan      html  css  js  c++  java
  • C# lazy<T>的用法

    .NET 4.0中加入了lazy<T>(懒对象),其实叫懒对象感觉不对,更应该叫延迟对象加载.

    正如我们所知,对象的加载是需要消耗时间的,特别是对于大对象来说消耗的时间更多.lazy可以实现对象的延迟加载.

    简单用法如下.

    创建一个控制台应用命名为lazyTest

     1 using System;
     2 
     3 namespace lazyTest
     4 {
     5     class Program
     6     {
     7         static void Main(string[] args)
     8         {
     9             Lazy<Big> lazyBig = new Lazy<Big>();
    10             Console.WriteLine("对象是否创建"+lazyBig.IsValueCreated);
    11             lazyBig.Value.Test();
    12             Console.WriteLine("对象是否创建"+lazyBig.IsValueCreated);
    13 
    14             Console.ReadKey();
    15         }
    16     }
    17 
    18     class Big
    19     {
    20         public Big() { }
    21         public void Test()
    22         {
    23             Console.WriteLine("Test....");
    24         }
    25     }
    26 }

    其中IsValueCreated属相显示其是否被创建.

    输出结果:

    对象是否创建False
    Test....
    对象是否创建True

     由此可见,根据lazy<T>创建的对象,只有当第一次使用到它时才会初始化.

    另,lazy<T>可使用委托来创建.

    using System;
    
    namespace lazyTest
    {
        class Program
        {
            static void Main(string[] args)
            {
                Lazy<Big> lazyBig = new Lazy<Big>(() => new Big(100));
                lazyBig.Value.Test();
                Console.ReadKey();
            }
        }
    
        class Big
        {
            public Big(int id)
            {
                this.ID = id;
            }
            public int ID { get; set; }
            public void Test()
            {
                Console.WriteLine("ID = "+ID.ToString());
            }
        }
    }
  • 相关阅读:
    Linux shell 常用命令记录
    [Bat]批量重命名文件
    【转】java术语(PO/POJO/VO/BO/DAO/DTO)
    TesseractOCR3.0语言库训练步骤
    关于Delphi Rtti对应TDatetime的一些启示
    Ubuntu Server 12.04 安装mysql 5.6.10
    Delphi透明 圆角 窗体 【转】
    奇怪的~用法
    很有用的VS2005插件——SlickEdit
    还不习惯Office 2007
  • 原文地址:https://www.cnblogs.com/Liqiongyu/p/5228906.html
Copyright © 2011-2022 走看看