csharp 字符串比较,不区分大小写

时间:2021-10-28 04:09:32

最近在看一些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,直接用前者就好了.

參考 :

MSDN string.Compare