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