程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 談談c#中的static

談談c#中的static

編輯:C#入門知識

static關鍵字大家肯定是用的很多了,說起來大家也都知道,這有什麼好談的?

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

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

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

  1. static是從面向過程到面向對象的遺留產物,以往開發都是面向過程的,所以很多使用了靜態類、靜態方法,到了面向過程以後,這個關鍵字被保留下來了。因此面向對象開發中最好不用或少用static關鍵字。
  2. 無論是靜態類還是非靜態類,效果都是一樣的,沒什麼區別。
  3. 如果你非要讓我使用靜態類,那麼這樣做的意義在哪裡?
  4. 如果我把非靜態類該為靜態類,那麼會不會有什麼問題?

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

  1. static關鍵字的確是面向過程開發的時代就有的關鍵字,但是並不代表是面向對象開發中就應該盡量避免static關鍵字。
  2. 靜態類跟非靜態類效果肯定是不一樣的,區別肯定是有的。
  3. 根據筆者的經驗,static類一般用於與狀態無關的類。那麼,什麼是與狀態無關的類?我的理解是當一個類中沒有屬性,只有方法的的時候,就可以認為這個類是與狀態無關的類。回想非靜態類實例化一個對象,目的在什麼地方?目的就是通過這個實例化的對象來保存類的狀態。
    不是嗎?例如
    A a = new A();
    a.Name = "Kevin";
    a.Sex = "男";
    ......
    通過我們實例化的對象a,類的狀態被對象a保持住了。
    如果我們的類沒有屬性,全是方法,那麼,有必要為了調用類中的方法,先實例化一個對象出來嗎?
    因此,筆者建議,在做類的設計的時候,如果類是與狀態無關的類,建議將其設計為static類。
    至於說這樣做的意義:首先,省略了構造一個對象的性能損耗,雖然可以忽略不計。其次,對程序員比較友好,調用類的方法更加的方便。
  4. 只要一個類是與狀態類無關的類,那麼將其設計成靜態類是沒有問題的。
    對於以上的一些觀點,純屬個人經驗之談。如果您有不同的觀點,歡迎共同交流。
     
    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved