簡體   English   中英

這對靜態類很好用嗎?

[英]Is this a good use for a static class?

我有一個只讀列表,在應用程序的所有實例之間共享,並且不會經常更改。 在靜態類上創建屬性以訪問此列表是一種好習慣嗎? 列表從靜態構造函數中的數據庫填充。 將應用程序池設置為每晚重新循環可以保證列表每天都是最新的正確嗎? 有什么理由這是個壞主意嗎? 謝謝!

這看起來是個很好的解決方案。 您可能希望使用密封類,以避免子類弄亂它。

全局狀態的問題在於應用程序正在更改它。 在這種情況下,這不是問題。

靜態類沒有錯。 您也可以使用緩存,它可以以類似的方式工作。 緩存為您提供額外的好處,即能夠在您選擇的時間基礎上使緩存無效。

您應該了解靜態屬性的存儲方式。

粗略地說,所有靜態都放在RuntimeType的實例中(反過來,它是在調用靜態ctor時創建的)。 CLR通過C#詳細描述了這種機制。

鑒於此,此集合將在所有實例中共享,但您應該記住所有可能的內存泄漏(想象一下當您訂閱集合事件時所有頁面即使在它們關閉時也可以訪問等等。)

這種方法的第二個缺點是這個集合不是最新的。 第三個缺點是你需要注意這個系列的線程安全性,這反過來會損害你的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM