一般來說,是否有任何性能增益或其他使用某種方式的原因?
假設我有一個winforms應用程序,每個進程只有一個窗口。在我的用例中沒有舒適的含義:變量只能從一個表單實例中的方法訪問。在對象實例中使用實例變量或靜態變量,這些變量或靜態變量只會一次實例化,不會從外部訪問?
1
A
回答
2
除非您調用方法數百萬次,否則您不會注意到性能差異。問題應該是:哪個變種更有意義?
靜態成員是有道理的有兩種情況:
- 所有實例(而且應該不止一個)都有一個共同的資源。
- 該類是靜態的,因此所有成員也必須是靜態的。
否則使用實例成員似乎很自然。在Object-oriented programming(OOP)的範例中,實體被表示爲具有數據字段(描述對象的屬性)和被稱爲方法(自由地從維基百科改編)的相關程序的對象。 靜態成員不是這個範例的一部分,也不是真正面向對象的。這是對象具有(實例)數據字段的原因。公共資源的
實例是:數據庫上下文中,配置選項,一個隨機數發生器,下一個自由ID被分配給一個實例。
靜態方法的例子是工廠方法。例如,Color
結構具有FromArgb
,FromKnownColor
和FromName
方法,其全部從不同的參數集合初始化Color
。
0
就表演而言,我同意Eric J的評論。考慮到設計的改變,我建議將它作爲實例成員。即使它不曾改變,但將它變爲靜態也沒有任何好處。
相關問題
- 1. 實例變量或靜態變量?
- 2. 分配實例變量靜態變量
- 3. 使實例變量靜
- 4. ruby中的靜態/實例變量
- 5. 必須靜態對象實例有靜態成員變量嗎?
- 6. Java靜態對象的訪問實例變量
- 7. 存儲靜態實例變量
- 8. 實例/靜態變量的JavaScript框架?
- 9. 靜態方法的Java實例變量
- 10. 靜態實例變量查找的Java
- 11. C++靜態變量多個實例
- 12. 靜態變量的多個實例
- 13. 靜態變量2個實例
- 14. 從另一個類從靜態方法訪問實例變量
- 15. 爲什麼更改實例變量也會改變靜態變量?
- 16. 靜態嵌套類的(實例)可以訪問外部靜態變量嗎?
- 17. 靜態變量是他們的類實例變量?
- 18. 靜態實例變量引用類的實例
- 19. 如何在main()中訪問私有靜態實例變量
- 20. 本地或實例變量
- 21. 訪問實例變量
- 22. Ruby實例變量訪問
- 23. 訪問實例變量
- 24. 訪問實例變量
- 25. coffeescript訪問實例變量
- 26. Python - 實例變量訪問
- 27. Java訪問實例變量
- 28. 訪問類實例變量
- 29. 實例變量
- 30. 實例變量
如果您正在編寫代碼,這些案例之間的任何可以想象的性能差異很重要,那麼您應該不會用C#編寫代碼。如果有的話,差異將很小。 –
應用程序正在執行處理(可能很重要)還是數據輸入(用戶永遠不會看到性能優勢)? –
在這種情況下,爲什麼不把它變成私人實例變量? – Rahul