概念:一個對象的延遲初始化(也稱延遲執行個體化)意味着該對象的建立将會延遲至第一次使用該對象時。 延遲初始化主要用于提高性能,避免浪費計算,并減少程式記憶體要求。
以下是最常見的方案:
有一個對象的建立開銷很大時,應用程式可能不會使用它。 例如,假定您在記憶體中有一個 Customer 對象,該對象的 Orders 屬性傳回一個 Orders 對象。 初始化 Orders 對象可能需要建立 Orders 對象的一個大數組(Orders[]),并可能需要資料庫連接配接。 如果使用者從不通路 Orders 屬性,則沒有理由使用系統記憶體或計算周期來建立 Orders 對象。 通過使用 Lazy<Orders> 将 Orders 對象聲明為延遲初始化,可以避免在不使用該對象的情況下浪費系統資源。
有一個對象的建立開銷很大,您想要将建立它的時間延遲到完成其他開銷大的操作之後。 例如,假定您的應用程式在啟動時加載若幹個對象執行個體,但隻有一些對象執行個體需要立即執行。 通過将不必要的對象的初始化延遲到已建立必要的對象之後,可以提高應用程式的啟動性能。
基本文法:
實作延遲初始化屬性
延時執行個體化,在大對象時使用比較多,使用Lazy<(Of <(T>)>)我們還可以實作一種泛型的單例基類,看代碼: