靜態方法
- 靜態的內存空間是固定的,相對來說更省資源。
- 創實例的創一個實例就要開辟一個新內存,耗費資源 靜態方法屬於類所有,類實例化前即可使用;
- 靜態方法只能訪問類中的靜態成員;
- static內部只能出現static變量和其他static方法!而且static方法中還不能使用this等關鍵字,因為它是屬於整個類;
- 靜態方法和靜態變量創建后始終使用同一塊內存,而使用實例的方式會創建多個內存。
普通方法
- 可以訪問類中的任何成員, 因為靜態方法在類實例化前就可以使用,而類中的非靜態變量必須在實例化之后才能分配內存;
- 靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀;
主要區別
- 靜態方法在創建對象前就可以使用了,非靜態方法必須通過new出來的對象調用。
- 靜態方法可以通過 類名::方法名直接調用。普通方法需要創建一個實例,也就是new一個對象,然后通過 對象名->方法名的方式來調用 靜態類只能包含靜態成員,否則會拋出編譯錯誤;
- 非靜態類既可以包含非靜態成員也可以包含靜態成員 靜態類是不能實例化,之所以不能實例化,是因為靜態類會導致C#編譯器將該類同時標記為abstract和sealed,並且編譯器不會在類型中 生成一個實例的構造函數,從而導致靜態類不能實例化;
- 非靜態類可以,並且靜態成員的訪問只能通過類來進行訪問,因為靜態成員是屬於類的。