Es lo mismo que un punto de código para la comparación de punto de código, es decir, uno que no presta atención al plegado de mayúsculas, ordenamientos culturales, composición o cualquier otra cosa que no sea el valor Unicode.
Esto es bastante inútil cuando se consideran las cadenas como un trozo de texto legible por humanos, pero a veces lo que desea es ser capaz de poner las cadenas en un ordenamiento, ya que algunos algoritmos (búsqueda binaria como usted dice) necesitará una ordenamiento consistente, pero los detalles de ese ordenamiento consistente no son significativos.
Sin embargo, es importante tener en cuenta que la comparación ordinal en cadenas ofrecida por .NET funciona en el UTF-16 utilizado internamente que no contiene mantener el orden del punto de código. Si comparamos una cadena con solo el carácter U + FF61 y una cadena con solo el carácter U + 10002, entonces .NET almacenará este último como pares de sustitución, de 0xD800 y 0XDC02.
Por lo tanto:
string.CompareOrdinal("\U0000ff61", "\U00010002");
y
string.Compare("\U0000ff61", "\U00010002", StringComparison.Ordinal);
ambos valores de retorno grandes que cero, a pesar de que el primero es más baja en valor de código de punto que el último (I utiliza la forma \ U en vez que el \ u forma para aclarar eso).
Si por "las cadenas de Unicode reales" quiere decir las cadenas .NET UTF-16, entonces la respuesta a su pregunta es no, por la razón opuesta a la que lo llevó a pensar que podría funcionar.
Como Jon Hanna señala en su respuesta, en .NET se comparan los puntos de código como pares sustituyentes UTF-16, no números de 32 bits, por lo que en realidad se obtienen resultados diferentes. Pero acepté su respuesta porque usted fue el primero en señalar que la comparación significativa de cadenas Unicode no debe basarse en los puntos de código. – Eloff
No llamaría a esto una comparación de cadenas Unicode "adecuada", sino una comparación de cadenas "lingüísticas".Hay muchos usos de la comparación de cadenas que no son lingüísticos, como la implementación de tipos de datos de almacenamiento y recuperación y algoritmos como 'quicksort',' binary search', etc. En tales casos, usted quiere el pedido confiable más rápido. – hippietrail
No estoy de acuerdo con @hippietrail, ya que en todos los casos que se mencionan, uno querría que U + 00e9 fuera lo mismo que U + 0065 seguido de U + 0301. ¿Existe una comparación de cadenas Unicode "adecuada"? – vy32