Si alguna vez tiene curiosidad sobre las diferencias en los métodos BCL, Reflector es su amigo :-)
Sigo estas pautas:
Concordancia exacta: EDITAR: Anteriormente siempre usé == operador en el principio de que dentro de Igual (cadena, cadena) el objeto == operador se usa para comparar las referencias de objeto, pero parece que strA.Equals (strB) todavía es 1-11% más rápido en general que string.Equals (strA, strB), strA == strB y string.CompareOrdinal (strA, strB). Probé en bucle con un StopWatch en valores de cadena internados / no internados, con longitudes de cadena iguales / diferentes y tamaños variables (1B a 5MB).
strA.Equals(strB)
Combinación legible por humanos (culturas occidentales, sin distinción entre mayúsculas y minúsculas):
string.Compare(strA, strB, StringComparison.OrdinalIgnoreCase) == 0
Concordancia legible por humanos (todas las demás culturas, mayúsculas / minúsculas insensibles / kana / etc definidas por CultureInfo):
string.Compare(strA, strB, myCultureInfo) == 0
Combinación legible por humanos con reglas personalizadas (todas las demás culturas):
CompareOptions compareOptions = CompareOptions.IgnoreCase
| CompareOptions.IgnoreWidth
| CompareOptions.IgnoreNonSpace;
string.Compare(strA, strB, CultureInfo.CurrentCulture, compareOptions) == 0