整理一些提高C#編程效能的技巧

來源:互聯網
上載者:User

標籤:比較   關注   hash   資源   不可變   bsp   tab   xpath   table   

1、使用StringBuilder代替使用string 串連符 "+"

說明:String類對象是不可變的(唯讀),一旦建立該對象,就不能修改該對象的值。

對象String對象的重新賦值,本質上是重新建立了一個String對象並將新的值賦值給該對象。

如果字串存在較多次的拼接時候,最後使用StringBuilder類,需要引用命名空間 System.Text。

該類不是建立新的對象,而是通過Append、Insert、Remove等方法對字串直接進行操作,最後通過

ToString方法返回操作結果。從而避免建立大量對象,造成資源浪費、效能降低。

例如:

//不要這樣寫String str="bei";str+="jing";str+="huan";str+="ying";str+="ni";//推薦這樣寫StringBuilder str=new StringBuilder();str.Append("bei");str.Append("jing");str.Append("huan");str.Append("ying");str.Append("ni");

 

2、用foreach 代替 for 迴圈

如果是可以使用foreach的時候,盡量用foreach,而不是 for。前者的效率比後者要高很多。

3、使用HashTable 代替其他字典集合類型(如 StringDictionary、NameValueCollection),存放少量資料的時候可以使用HashTable。

4、避免使用ArrayList

因為ArrayList使用的時候存在裝箱、拆箱會造成效能的損失,可以用泛型來代替。

5、如果是字元進行比較的時候可以採用String.Compare,它會忽略大小寫進行比較,而不要使用UpperCase、Lowercase轉換後進行比較。

6、如果只是從xml對象中讀取資料,可以用唯讀XPathDocument代替XMLDocument,可以提高效能。

7、C#捕獲異常的時候,不要使用通用的System.Exception。可以根據程式邏輯考慮可能出現的異常進行控制。

8、要避免在迴圈體內聲明變數,如果可以的化,最好放在迴圈體外聲明,在迴圈體內初始化。

9、採用using和try/finaly來做資源清理

10、不要使用異常(Exception)來控製程序的流程

因為捕獲異常對效能的損耗很大,最好不要用異常去控製程序的流程。

11、使用實值型別的ToString方法避免裝箱操作。

因為實值型別到參考型別會造成效能的損耗,所以使用實值型別的ToString方法可以避免裝箱造成的效能損耗。

12、避免濫用反射,反射也是比較浪費效能的操作

當使用反射來調用類型或者觸發方法,或者訪問一個欄位或者屬性是,CLR需要做很多工作:校正參數、檢查許可權、

所以非常耗時,因此這樣的情況下要盡量避免反射的使用。

歡迎關注我的公眾號,定期推送文章:原文

整理一些提高C#編程效能的技巧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.