• 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());
            }
        }
    }
  • 相关阅读:
    面向对象和面向过程的区别
    k-means算法
    win10系统下安装mysql
    python并发编程之多进程
    操作系统的概念
    前端基础之html
    聚类分析
    决策树
    Mysql
    SQL练习题
  • 原文地址:https://www.cnblogs.com/Liqiongyu/p/5228906.html
Copyright © 2020-2023  润新知