天天看點

C#性能優化之Lazy<T> 實作延遲初始化

  在.NET4.0中,可以使用Lazy<T> 來實作對象的延遲初始化,進而優化系統的性能。延遲初始化就是将對象的初始化延遲到第一次使用該對象時。延遲初始化是我們在寫程式時經常會遇到的情形,例如建立某一對象時需要花費很大的開銷,而這一對象在系統的運作過程中不一定會用到,這時就可以使用延遲初始化,在第一次使用該對象時再對其進行初始化,如果沒有用到則不需要進行初始化,這樣的話,使用延遲初始化就提高程式的效率,進而使程式占用更少的記憶體。

  下面我們來看代碼,建立一個控制台程式,首先建立一個Student類,代碼如下:(由于用的英文版作業系統,是以提示都寫成英文,還請見諒)

然後在Program.cs中寫如下代碼:

點選F5,運作結果如下:

C#性能優化之Lazy<T> 實作延遲初始化

可以看到,Student是在輸出Name屬性時才進行初始化的,也就是在第一次使用時才執行個體化,這樣就可以減少不必要的開銷。

Lazy<T> 對象初始化預設是線程安全的,在多線程環境下,第一個通路 Lazy<T> 對象的 Value 屬性的線程将初始化 Lazy<T> 對象,以後通路的線程都将使用第一次初始化的資料。