1、靜態方法屬於類所有,類例項化前即可使用;
2、非靜態方法可以訪問類中的任何成員,靜態方法只能訪問類中的靜態成員;
3、因為靜態方法在類例項化前就可以使用,而類中的非靜態變數必須在例項化之後才能分配記憶體;
4、static內部只能出現static變數和其他static方法!而且static方法中還不能使用this等關鍵字,因為它是屬於整個類;
5、靜態方法效率上要比例項化高,靜態方法的缺點是不自動進行銷毀,而例項化的則可以做銷毀;
6、靜態方法和靜態變數建立後始終使用同一塊記憶體,而使用例項的方式會建立多個記憶體。
主要區別:靜態方法在建立物件前就可以使用了,非靜態方法必須通過new出來的物件呼叫。
靜態類靜態類和非靜態類重要的區別是在於靜態類不能被例項化,也就是說不能使用
new關鍵字建立靜態類型別的變數。使用static關鍵字來宣告靜態類,這樣的意義在於:首先,它防止程式設計師寫**來例項化該靜態類;其次,它防止在類的內部宣告任何例項欄位或方法。
靜態類的使用
關鍵字:
static
呼叫方式:
< 靜態類名.靜態方法 >注意:
1.在靜態類中只能訪問靜態成員; 2
.在靜態類中只能有靜態成員;
靜態類的主要特性:
1:僅包含靜態成員。
2:無法例項化。
3:是密封的。
4:不能包含例項建構函式。
靜態成員
1:非靜態類可以包含靜態的方法、字段、屬性或事件;
2:無論對乙個類建立多少個例項,它的靜態成員都只有乙個副本(體現在在a例項改變了某個靜態變數的值將影響所有的例項);
3:靜態方法和屬性不能訪問其包含型別中的非靜態欄位和事件,並且不能訪問任何物件的例項變數;
4:靜態方法只能被過載,而不能被重寫,因為靜態方法不屬於類的例項成員;
5:雖然字段不能宣告為 static
const,但 const 欄位的行為在本質上是靜態的。這樣的字段屬於類,不屬於類的例項。因此,可以同對待靜態字段一樣使用 classname.membername 表示法來訪問 const
字段;6:c# 不支援靜態區域性變數(在方法內部定義靜態變數)。
靜態和非靜態
在自定義類和.net framework類庫中都可以發現,類中大部分是乙個類,很少是靜態類,那到底靜態類是否真的需要?其實程式上的設計都是必須的,所有的設計都是 於生活,於客戶分析。在程式設計初期,需要業務邏輯,明確編寫流程,以防後期各種修改。比如設計個學校的管理軟體,記錄每個學生的資訊,包括班級 ...
方法 靜態 非靜態
方法add1 add2和multiply add1 multiply都是靜態的方法,所以可以不通過建立物件而只用 類名.方法 名呼叫即可 方法add1和main方法同在乙個類program中,因此省略 方法名.非靜態方法add2只能通過例項化的方法來呼叫 否則會報13行的錯誤。using syste...
靜態和非靜態
靜態包括靜態類 靜態方法和靜態變數。靜態都是全域性擁有的,比如,靜態變數是這個類的所有例項共有 乙個例項的修改影響其他例項。靜態類中只能包含靜態變數和靜態方法。非靜態類既可以包含靜態變數和方法,又可以包含非靜態變數和方法。靜態類不能夠被例項化,直接使用類名呼叫變數或方法。非靜態變數同樣可以使用類名呼...