高效C#編碼優化准繩。本站提示廣大學習愛好者:(高效C#編碼優化准繩)文章只能為提供參考,不一定能成為您想要的結果。以下是高效C#編碼優化准繩正文
本文匯總了高效C#編碼罕見的優化准繩,關於停止C#法式設計來講有很年夜的參考自創感化。詳細列出以下:
1.foreach VS for 語句
Foreach 要比for具有更好的履行效力
Foreach的均勻消費時光只要for的30%.經由過程測試成果在for和foreach都可使用的情形下,我們推舉應用效力更高的foreach
別的,用for寫入數據時光年夜約是讀取數據時光的10倍閣下.
2.防止應用ArrayList
ArrayList的機能低下任何對象添加到ArrayList中都要封箱為System.Object,從ArrayList中掏出數據都要拆箱回現實的類型
泛型聚集類的高機能,泛型聚集是強類型的
3.應用HashTable字典聚集
當寄存大批數據時建議應用HashTable代替像StringDictionary,NameValueCollection, HybridCollection如許的字典聚集
4.為字符串容器聲明常量
為字符串容器聲明常量,不要直接把字符串封裝在雙引號””中,防止字符串對象赓續在內存中創立和釋放.進步字符串對象的拜訪效力.
//防止 MyObject obj = new MyObject(); obj.Status = “Active”; //推舉 const string c = “Acive”; MyObject obj = new MyObject(); obj.Status = c;
5.應用String.Compare()字符串比擬
不要應用UpperCase或LowerCase轉換字符串的年夜小寫,再停止比擬
應用String.Compare()可疏忽字符串年夜小寫停止比擬
String strTemp = “Active”; If(String.Compare(strTemp,”active”,true)==0){ Consolt.Write(“Equal”); }
6.應用StringBuilder字符串拼接
①.String類對象是弗成變的(只讀),關於String對象的從新賦值,實質是從新創立一個新的String對象並付與新值給該對象.
②.System.Text.StringBuilder 保護一個長度等於Capacity的字符串(可以看做字符數組),當Capacity長度的字符串缺乏以包容成果字符串時,StringBuilder開拓新的長度為經由下面的規矩盤算好的Capacity的內存區域,將原字符串復制到新的內存區域再停止操作,原字符串區域交給GC收受接管。是以這裡也觸及到內存的分派與收受接管,應用StringBuilder時最好預算一下所需容量,用這個容量初始化Capacity,進步機能。StringBuilder不克不及包管一切實例成員都是線程平安的,雖然在類型界說中參加了許多線程平安的掌握,假如要確保其線程平安,須手工完成線程同步機制。
7.XPathDocument讀取XML文件
假如只是讀取XML對象的數據,那末用只讀的XPathDocument取代XMLDocument,可以進步機能
8.防止在輪回體裡聲明變量,應當在輪回體外聲明變量,在輪回體內初始化變量
//防止 For(int i=0;i<10;i++){ SomeClass obj = new SomeClass(); //… } //推舉 SomeClass obj = null; For(int i=0; i<10; i++){ obj = new SomeClass(); //… }
9.捕捉指定的異常
捕捉異常時,應應用詳細的異常類停止捕捉,並依照異常所捕捉得規模依照由小到年夜的次序停止界說不要應用通用的System.Exception
Private void Find(object obj){ try{ Console.write(obj.ToString()); } catch(ArgumentNullException ane) { //… } catch(ArgumentException ae) { //… } catch(SystemException se) { //… } catch(Exception e) { //… } }
不要應用Exception掌握流程,捕捉異常對機能的消耗是盡人皆知的.是以最好可以或許防止異常的產生
10.應用using和try/finally清算資本
.NET 平台在內存治理方面供給了GC(Garbage Collection),擔任主動釋放托管資本和內存收受接管的任務,但它沒法對非托管資本停止釋放,這時候我們必需本身供給辦法來釋放對象內分派的非托管資本
應用非托管資本的類型必需完成IDisposable接口的Dispose辦法來准確的釋放材料
當應用帶有Dispose辦法的類型化資本時,應在應用終了時挪用Dispose辦法,實時釋放失落不消的資本.
應用using或try/finally能更好的包管Dispose辦法被實時的挪用
11.防止濫用反射
反射是比擬糟蹋機能的操作,應防止濫用反射
影響機能的緣由:
當應用反射來挪用類型或觸發辦法,拜訪字段屬性時,CLR須要做更多的任務:校驗參數,檢討權限等.
當編寫一個靜態結構類型(晚綁定)的運用時,可采用以下方法停止調換
經由過程類的繼續關系
經由過程接話柄現
經由過程拜托完成
12.防止裝箱操作
應用值類型的ToString辦法防止裝箱操作
緣由:數字和字符串拼接的時刻,由於數據類型分歧,數字經由過程裝箱操作轉換為援用類型後能力與字符串停止拼接.
//建議 int num=5; string str = “link me”+num.ToString();
13.HttpServerUtility.Transfer
采取 Server.Transfer 語法,在頁面中應用該辦法可防止不用要的客戶端重定向(Response.Redirect)。
Int32.TryParse()
類型轉化Int32.TryParse()優於Int32.Parse()優於Convert.ToInt32()
Convert.ToInt32 會把終究的解析任務署理給Int32.Parse
Int32.Parse 會把終究的解析任務署理給Number.ParseInt32
Int32.TryParse 會把終究的解析任務署理給Number.TryParseInt32
信任本文所述的C#優化准繩可以或許對年夜家的C#法式設計起到必定的自創感化。