Clase SortVersion

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 en función de 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 seguían 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 compatibles de Unicode se aplica solo a la comparación y ordenación de caracteres; 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 ordenación y comparación de cadenas depende de la versión del sistema operativo, los resultados de la comparación de cadenas podrían diferir incluso para las aplicaciones que se ejecuten 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 ordenen las cadenas dependerá de la versión de Unicode que use el sistema operativo al realizar la comparación. En Linux y macOS, así como en 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 clase SortVersion proporciona información sobre la versión de 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 las versiones de Unicode que se usen para comparar y ordenar las cadenas de una aplicación.

Es posible crear instancias de un objeto SortVersion de dos maneras:

  • Llamando al constructor SortVersion, que crea una instancia de un nuevo objeto SortVersion en función de un número de versión y un identificador de ordenación. Este constructor resulta más útil al volver a crear un objeto SortVersion 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 clase SortVersion tiene dos propiedades, FullVersion y SortId, que indican la versión de Unicode y la referencia cultural específica usada para la comparación de cadenas. La propiedad FullVersion es un valor numérico arbitrario que refleja la versión de Unicode utilizada para la comparación de cadenas, mientras que la propiedad SortId es un Guid arbitrario que refleja la referencia cultural cuyas convenciones se usan para la comparación de cadenas. Los valores de estas dos propiedades solo son importantes cuando se comparan dos objetos SortVersion mediante el método Equals, el operador Equality o el operador Inequality.

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. Para ello, siga estos pasos:

  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, es posible volver a crear el objeto SortVersion utilizado para ordenar las cadenas llamando al constructor SortVersion.

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

  4. Si los dos objetos SortVersion no fueran iguales, los datos de cadena se deberán reordenar.