1. 父類要精簡,沒有必要的方法和屬性不要寫在上面。因為即使是私人的方法和屬性,對於子類來說,雖然無法繼承,但是這些內容也會儲存在子類中,只是我們無法使用而已。這樣就造成了子類佔用了許多無謂的空間。
2. 類中的靜態欄位沒有倍乘成本。既我們對那些在類中需要經常使用的,或是建立成本比較大的欄位,要盡量用靜態欄位。而如果用非靜態欄位,如果出現莫個類建立一萬次的話,那就會建立一萬個該欄位。會非常影響效率。
3. 靜態方法並不比執行個體方法效能好。因為在.NET中,無論是靜態方法還是執行個體方法在程式碼片段中只是儲存一份,也就是不會出現上面所說的執行個體欄位出現的倍乘問題。所以我們在編寫類的時候,不用從倍乘方面考慮方法的動靜態問題。
4. 虛函數存在效率問題。因為無論是靜態方法還是動態方法,在編譯器中都是執行Jmp到確定的地址,而虛函數的地址是不確定的,需要後期綁定,所以對程式效率有所影響。
5. 慎用Struct類型作為參數進行傳遞。在編寫程式的時候我們有時會考慮是用類還是用結構的問題,雖然在.NET中結構沒有記憶體回收的成本(當然記憶體回收的成本也不會因為少一個類而降低多少),但是當作為參數傳遞時需要記憶體拷貝,這樣的成本是比較大的。但是如果我們僅僅是在方法裡使用結構,而不是作為參數進行傳遞則沒有關係。
6. 將對象置為NULL,來誘發垃圾收集器收集是無效率的。我們常常在程式中建立某個類,使用後,在結束的位置用 xxx=null;來試圖釋放記憶體,其實常常垃圾收集器已經在該類使用後將其收集了,這樣做多此一舉。
7. 盡量不要自己寫解構函式。由於.NET中的垃圾收集器已經很有效了,所以我們沒有必要一定要親曆親為的去寫析夠函數來釋放我們不放心的對象或變數。而且析夠函數的效率比較低,反倒會起到不好的作用。
8. 垃圾收集器雖然效率高,但是它也有“欺軟怕硬”的特點。對於那些“抱團”的對象(與其他對象有縱橫交錯的聯絡,如DataSet類),其收集的效果沒有簡單對象好(我們是不是可以幫它一下呢?和前面的第6點需要辨正的來看問題?)。
9. “介面”、“委託”、“反射”這些都是晚幫定地址的,其效率都會收到影響。