靜態類:
1:僅包含靜態變數和靜態方法。
2:無法例項化。
3:不能包含例項建構函式。
4:是密封的。
非靜態類:
1.可以包含非靜態成員,也可以包含靜態成員。
2.每次例項化都是乙個新的物件。
3.可以不顯示例項化,因為內部有乙個預設的靜態建構函式,不可過載,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且只執行一次。
4.也可以通過 類名.方法名或變數名 訪問靜態成員
靜態方法:
1.靜態方法不能引用非靜態變數
4:靜態方法只能被過載,而不能被重寫,因為靜態方法不屬於類的例項成員;當然也不能是virtual和abstract型別的
非靜態方法:
1.可以同時引用 非靜態變數和靜態變數
靜態變數
1.只有乙個副本,例項化類,不會初始化靜態變數的值。屬於類所有,生命週期和**運用程式一樣長
2.c# 不支援靜態區域性變數(在方法內部定義靜態變數)。
非靜態變數
1.每次例項化都是乙個新的變數。自然要初始化值
靜態建構函式
1:靜態類可以有靜態建構函式,靜態建構函式不可繼承;
2:靜態建構函式可以用於靜態類,也可用於非靜態類;
3:靜態建構函式無訪問修飾符、無引數,只有乙個 static 標誌;
4:靜態建構函式不可被直接呼叫,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動執行,並且
只執行一次。
問題:1.靜態類可以例項化嗎?靜態類可以有非靜態方法和變數嗎?靜態類的方法和變數怎麼呼叫?
a:靜態類不能例項化;不能有非靜態方法和變數;物件名.方法名或變數名呼叫。
2.非靜態類可以包含靜態變數和方法嗎?怎麼呼叫?
a:非靜態類可以包含靜態變數和方法;類名.方法名或變數名呼叫
3.靜態方法可以引用非靜態變數嗎?
4.例項類中的靜態變數和非靜態變數有什麼區別?
a:靜態變數只有乙個副本,例項變數每例項化話一次都是乙個新的變數,變數值都會初始化。 而靜態變數變數的生存週期和**運用程式生命週期長度一樣。值會累加。
使用推薦:
當定義的類不需要進行例項化時,我們使用靜態類;如果需要例項化物件,需要繼承等特性時,應該使用非靜態類。
盡量用例項變數,少用靜態變數。因為例項變數隨著物件的銷毀而銷毀。靜態變數整個運用程式銷毀才銷毀。就像js中應該多使用區域性變數少用全域性變數一樣。
將需要同時也被靜態方法呼叫的變數設為靜態的,那麼靜態方法和例項方法都能訪問.
靜態類,靜態方法,靜態變數與非靜態之前的區別
靜態類 1 僅包含靜態變數和靜態方法。2 無法例項化。3 不能包含例項建構函式。4 是密封的。非靜態類 1.可以包含非靜態成員,也可以包含靜態成員。2.每次例項化都是乙個新的物件。3.可以不顯示例項化,因為內部有乙個預設的靜態建構函式,不可過載,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動...
靜態類,靜態方法,靜態變數與非靜態之前的區別
靜態類 1 僅包含靜態變數和靜態方法。2 無法例項化。3 不能包含例項建構函式。4 是密封的。非靜態類 1.可以包含非靜態成員,也可以包含靜態成員。2.每次例項化都是乙個新的物件。3.可以不顯示例項化,因為內部有乙個預設的靜態建構函式,不可過載,當建立類例項或引用任何靜態成員之前,靜態建構函式被自動...
非靜態函式,非靜態變數與靜態函式,靜態變數
一 函式 函式的引入可以減少程式的目標 實現程式 的共享。但是,函式呼叫也需要一些時間和空間方面的開銷,因為呼叫函式實際上將程式執行流程轉移到被調函式中,被調函式的程式 執行完後,再返回到呼叫的地方。這種呼叫操作要求呼叫前保護現場並記憶執行的位址,返回後恢復現場,並按原來儲存的位址繼續執行。對於較長...