Nếu bạn từng tò mò về sự khác biệt trong các phương pháp BCL, Reflector là bạn của bạn :-)
Tôi làm theo các hướng dẫn sau:
Kết hợp chính xác: EDIT: Trước đây tôi luôn sử dụng toán tử == theo nguyên tắc bên trong Equals (chuỗi, chuỗi) toán tử object == được sử dụng để so sánh các tham chiếu đối tượng nhưng có vẻ như strA.Equals (strB) vẫn là 1-11% tổng thể nhanh hơn chuỗi.Equals (strA, strB), strA == strB và string.CompareOrdinal (strA, strB). Tôi đã kiểm tra vòng lặp với Đồng hồ bấm giờ trên cả hai giá trị chuỗi được thực hiện / không được thực hiện, với độ dài chuỗi giống nhau / khác nhau và kích thước khác nhau (1B đến 5MB).
strA.Equals(strB)
Trận đấu có thể đọc được của con người (văn hóa phương Tây, trường hợp không nhạy cảm):
string.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) == 0
Kết hợp có thể đọc được của con người (Tất cả các nền văn hóa khác, trường hợp không nhạy cảm / giọng nói / kana / etc được xác định bởi CultureInfo):
string.Compare(strA, strB, myCultureInfo) == 0
Phù hợp với con người có thể đọc được với các quy tắc tùy chỉnh (Tất cả các nền văn hóa khác):
CompareOptions compareOptions = CompareOptions.IgnoreCase
| CompareOptions.IgnoreWidth
| CompareOptions.IgnoreNonSpace;
string.Compare(strA, strB, CultureInfo.CurrentCulture, compareOptions) == 0