最近在看一些MSDN上的文章,看到一篇我"常犯"的錯,就是文字字串如果要不分大小寫去比對,我都是先ToLower()或是ToUpper()之後再去比,但看完這篇後,才知道我錯了.
這個例子是在下面這個的情況 :
string a="AAA"; string b="aaa"; bool c=a.ToUpper()==b.ToUpper();
很習慣性的寫法,在MSDN裡說明了這個用法並不建議使用,因為在ToUpper()或是ToLower(),還是會將轉換後的字串暫存起來,再去做比對的動作,所以這種做法並不建議,如果要比對,最好是用string.Compare(a,b,true).
所以這段code就會改為如下 :
string a="AAA"; string b="aaa"; bool c=string.Compare(a,b,true)==0;
寫了一段Sample去比較了一下這兩種的效能差異,差不多後者快了前者五倍以上,但如果只是要做a==b,不做Upper/Lower,直接用前者就好了.
參考 :