2

所以,我有一個我正在使用或多或少常量的成員的類。我不能將它們分配爲常量,因爲它們比簡單的基元更復雜。因此,這些「準常數」在我的應用程序中的不同地方反覆使用。無可否認,我將來可能會將這些文件移動到配置文件中,並使其動態加載。懶惰實例化靜態類的成員會有好處嗎?

但是,現在我很好奇 - 雖然這些是從一個靜態類提供的,我是否能夠利用惰性實例化來包裝它們?我問的原因是因爲我沒有利用每一個「準恆定」,並且在構建每一個(儘管很少)時有一些開銷。我不希望這樣做有任何真正的收益,因爲它不是瓶頸或任何事情,但我對好的做法感到好奇。我對靜態類的內部知識不夠,不能自己回答。我知道訪問靜態成員不需要類的實例 - 儘管在某些時候它必須構造這些成員。所以我的問題歸結爲:什麼時候靜態類的靜態成員構造?如果它們是在使用之前構建的,那麼我是否可以因懶惰實例化而受益? (實例他們只要求當他們?)

+0

有些使用Singleton Pattern在需要時實例化屬性。 –

+0

有效的點 - 但我不明白你爲什麼會選擇靜態類。無可否認,我的懶惰實例化的用法在我的情況下不是必需的 - 但我可以看到它可能被批准的位置 - 例如,如果用戶作出某個決定時反覆需要成員,但如果用戶不需要做出所述決定。 – RutledgePaulV

回答

2

當一個靜態類的靜態成員構成?

靜態構造函數和所有初始化發生在該類的第一個實例被創建或任何靜態成員被引用之前。

通常情況下,靜態構造函數和所有靜態成員都是第一次,你指的是課前立即進行初始化,雖然在技術上它可以在之前的第一次使用的任何一點發生。

如果它們是在使用之前構建的,那麼我是否可以利用惰性實例化? (實例他們只要求當他們?)

您可以從中受益,特別是當值需要顯著初始化或大量內存,並且可能無法始終使用。 Lazy(Of T)類使得這個實現起來非常簡單。