熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

談談c#中的static

2013-11-13 10:09:39  來源: .NET編程 

  最近突然覺得自己對於static的概念有點模糊了所以就從網上搜集些資料又自己做了一些demo試驗了一下下邊將一些寫的比較好的文章分享一下static關鍵字大家肯定是用的很多了說起來大家也都知道這有什麼好談的?

  可是回想起以前的一些事情不免叫我心中……

  事情起因一個項目中的一些類中全部都是方法但是被設計成了非靜態類了於是我為了說服同事將這些類設計成靜態的下了好大的力度等同事明白過來以後我已疲憊不堪

  不知道您是否存在以下觀點?

  static是從面向過程到面向對象的遺留產物以往開發都是面向過程的所以很多使用了靜態類靜態方法到了面向對象以後這個關鍵字被保留下來了因此面向對象開發中最好不用或少用static關鍵字

  無論是靜態類還是非靜態類效果都是一樣的沒什麼區別

  如果你非要讓我使用靜態類那麼這樣做的意義在哪裡?

  如果我把非靜態類該為靜態類那麼會不會有什麼問題?

  下面針對以上的一些觀點筆者闡述下自己的理解如果哪裡有寫的不對的地方還請指出

  static關鍵字的確是面向過程開發的時代就有的關鍵字但是並不代表是面向對象開發中就應該盡量避免static關鍵字

  靜態類跟非靜態類效果肯定是不一樣的區別肯定是有的

  根據筆者的經驗static類一般用於與狀態無關的類那麼什麼是與狀態無關的類?我的理解是當一個類中沒有屬性只有方法的的時候就可以認為這個類是與狀態無關的類回想非靜態類實例化一個對象目的在什麼地方?目的就是通過這個實例化的對象來保存類的狀態

  不是嗎?例如A a = new A()aName = KevinaSex = ……

  通過我們實例化的對象a類的狀態被對象a保持住了

  如果我們的類沒有屬性全是方法那麼有必要為了調用類中的方法先實例化一個對象出來嗎?

  因此筆者建議在做類的設計的時候如果類是與狀態無關的類建議將其設計為static類

  至於說這樣做的意義首先省略了構造一個對象的性能損耗雖然可以忽略不計其次對程序員比較友好調用類的方法更加的方便

  只要一個類是與狀態類無關的類那麼將其設計成靜態類是沒有問題的

  對於以上的一些觀點純屬個人經驗之談如果您有不同的觀點歡迎共同交流


From:http://tw.wingwit.com/Article/program/net/201311/12751.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.