C#的靜態方法和實例化方法的區別


C#的靜態方法和實例化方法的區別

在大多數時候,我們寫一個方法,會把方法區分為實例化方法和靜態方法。而當被問到靜態方法和實例化方法的區別的時候,我在寫這篇文章的前10分鍾,或許我會回答:“靜態方法無需實例化(即不使用關鍵字new)即可直接被調用

  • 靜態方法和實例方法,在加載時機上是一樣的,在類型第一次被使用的時候加載,調用的速度基本上沒有差別
  • 靜態方法和實例化方法在本質上都是方法,所以在內存中,無論是靜態方法還是實例化方法,在內存中都只保存一份
    • 而且代碼中的所有方法都會保存在一個特定的區域
  • 如果一個方法,與他所在的類的事例對象無關,那么它就應該是靜態的,而不應該把它寫成實例方法。
  • 從面向對象的角度來說,在抉擇使用靜態方法還是實例化方法,應該依據這個方法和實例化對象是否有邏輯關系
    • 如果方法與實例化對象有邏輯關聯性,則使用實例化方法
    • 如果方法與實例化對象沒有邏輯關聯性,則使用靜態方法

為什么要把方法分為靜態方法和實例化方法?

早期的結構化編程,幾乎所有的方法都是“靜態方法”,而直到面向對象編程語言來臨時,才被區分為了實例化方法和靜態方法。而這樣的區分,並不是單一從性能的角度進行考慮的,而是為了讓開發更加模式化,面向對象化。

比如說人這個類,姓名、年齡等,這些屬性就必須是實例化屬性,而所屬科目,比如靈長類,則一定是靜態屬性,因為這個屬性並不依賴於某一個人

總結下來,靜態方法用在與類中屬性無關的函數,而實例化方法用在與類中屬性有關的函數。而在真實的實踐當中也證明,靜態方法的調用並不比實例化方法效率更高


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM