C# lazy 的用法


.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());
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM