Compartir a través de


En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

Ordenación y comparación de cadenas en .NET Framework

A través de .NET Framework 4, cada versión de .NET Framework incluía tablas que contenían ponderaciones de ordenación y datos sobre la normalización de cadenas y que se basan en una versión determinada de Unicode. En .NET Framework 4.5 y versiones posteriores, la presencia de estas tablas depende del sistema operativo:

  • En Windows 7 y versiones anteriores, las tablas siguen usándose para comparar y ordenar cadenas.
  • En Windows 8, .NET Framework delega las operaciones de comparación y ordenación de cadenas en el sistema operativo.

Por lo tanto, el resultado de una comparación de cadenas puede depender no solo de la versión de .NET Framework, sino también de la versión del sistema operativo, como se muestra en la tabla siguiente. Tenga en cuenta que esta lista de versiones Unicode admitidas solo se aplica a la comparación de caracteres y la ordenación; no se aplica a la clasificación de caracteres Unicode por categoría.

Versión de .NET Framework Sistema operativo Versión de Unicode
4 Todos los sistemas operativos Unicode 5.0
4.5 y versiones posteriores Windows 7 Unicode 5.0
4.5 y versiones posteriores Windows 8 y versiones posteriores Unicode 6.0

En Windows 8, dado que la versión de Unicode usada en la comparación de cadenas y el orden depende de la versión del sistema operativo, los resultados de la comparación de cadenas pueden diferir incluso para las aplicaciones que se ejecutan en una versión específica de .NET Framework.

Ordenación y comparación de cadenas en .NET Core

Todas las versiones de .NET (Core) se basan en el sistema operativo subyacente al realizar comparaciones de cadenas. Por lo tanto, los resultados de una comparación de cadenas o el orden en que se ordenan las cadenas depende de la versión de Unicode usada por el sistema operativo al realizar la comparación. En Linux, macOS y Windows 10 y versiones posteriores, los componentes internacionales para bibliotecas Unicode proporcionan la implementación para las API de comparación y ordenación.

Uso de la clase SortVersion

La SortVersion clase proporciona información sobre la versión Unicode usada por .NET para la comparación y ordenación de cadenas. Permite a los desarrolladores escribir aplicaciones que puedan detectar y controlar correctamente los cambios en la versión de Unicode que se usa para comparar y ordenar las cadenas de una aplicación.

Puede crear instancias de un SortVersion objeto de dos maneras:

  • Al llamar al constructor SortVersion, que instancia un nuevo objeto SortVersion basado en un número de versión y un identificador de ordenación. Este constructor es más útil al volver a crear un SortVersion objeto a partir de datos guardados.
  • Recuperando el valor de la propiedad CompareInfo.Version. Esta propiedad proporciona información sobre la versión Unicode que usa la implementación de .NET en la que se ejecuta la aplicación.

La SortVersion clase tiene dos propiedades, FullVersion y SortId, que indican la versión Unicode y la referencia cultural específica usada para la comparación de cadenas. La FullVersion propiedad es un valor numérico arbitrario que refleja la versión Unicode utilizada para la comparación de cadenas, y la SortId propiedad es un valor arbitrario que refleja la cultura Guid, cuyas convenciones se usan para la comparación de cadenas. Los valores de estas dos propiedades son importantes solo cuando se comparan dos SortVersion objetos mediante el Equals método , el Equality operador o el Inequality operador .

Normalmente, se usa un objeto SortVersion al guardar o recuperar alguna forma de datos de cadena ordenados y confidenciales de referencia cultural, como índices o cadenas literales. Esto requiere los pasos siguientes:

  1. Cuando se guardan los datos de cadena ordenados, también se guardan los valores de propiedad FullVersion y SortId .

  2. Cuando se recuperan los datos de cadena ordenados, puede volver a crear el SortVersion objeto utilizado para ordenar las cadenas llamando al SortVersion constructor .

  3. Este objeto recién creado SortVersion se compara con un SortVersion objeto que refleja la cultura cuyas convenciones se usan para ordenar los datos de texto.

  4. Si los dos SortVersion objetos no son iguales, los datos de cadena se deben reordenar.