Classe SortVersion

Cet article vous offre des remarques complémentaires à la documentation de référence pour cette API.

Comparaison de chaînes et tri dans .NET Framework

Jusqu’à .NET Framework 4, chaque version de .NET Framework incluait des tables qui contenaient des pondérations de tri et des données sur la normalisation de chaînes basées sur une version particulière d’Unicode. Dans .NET Framework 4.5 et les versions ultérieures, la présence de ces tables dépend du système d’exploitation :

  • Sur Windows 7 et les versions antérieures, les tables continuent d’être utilisées pour comparer et classer des chaînes.
  • Sur Windows 8, .NET Framework délègue des opérations de comparaison et de classement de chaînes au système d’exploitation.

Par conséquent, le résultat d’une comparaison de chaînes peut dépendre non seulement de la version de .NET Framework, mais également de la version du système d’exploitation, comme le montre le tableau suivant. Notez que cette liste de versions d’Unicode prises en charge s’applique uniquement à la comparaison et au tri de caractères ; elle ne s’applique pas à la classification des caractères Unicode par catégorie.

Version du .NET Framework Système d’exploitation Version d’Unicode
4 Tous les systèmes d’exploitation Unicode 5.0
4.5 et versions ultérieures Windows 7 Unicode 5.0
4.5 et versions ultérieures Windows 8 et versions ultérieures Unicode 6.0

Sur Windows 8, étant donné que la version d’Unicode utilisée dans la comparaison et le classement de chaînes dépend de la version du système d’exploitation, les résultats de la comparaison de chaînes peuvent varier, même pour des applications qui s’exécutent sur une version spécifique de .NET Framework.

Tri et comparaison de chaînes dans .NET Core

Toutes les versions de .NET (Core) s’appuient sur le système d’exploitation sous-jacent lors de l’exécution de comparaisons de chaînes. Les résultats d’une comparaison de chaînes ou de l’ordre dans lequel les chaînes sont triées dépendent donc de la version d’Unicode utilisée par le système d’exploitation lors de l’exécution de la comparaison. Sur Linux, macOS et Windows 10 et versions ultérieures, les bibliothèques de Composants internationaux pour Unicode fournissent l’implémentation pour la comparaison et le tri des API.

Utiliser la classe SortVersion

La classe SortVersion fournit des informations sur la version Unicode utilisée par .NET pour la comparaison et le classement de chaînes. Elle permet aux développeurs d’écrire des applications capables de détecter et de gérer correctement des modifications dans la version d’Unicode utilisée pour comparer et trier les chaînes d’une application.

Vous pouvez instancier un objet SortVersion de deux façons :

  • En appelant le constructeur SortVersion, qui instancie un nouvel objet SortVersion en fonction d’un numéro de version et d’un ID de tri. Ce constructeur est le plus utile lors de la recréation d’un objet SortVersion à partir de données enregistrées.
  • En extrayant la valeur de la propriété CompareInfo.Version. Cette propriété offre des informations sur la version Unicode utilisée par l’implémentation .NET sur laquelle l’application s’exécute.

La classe SortVersion a deux propriétés, FullVersion et SortId, qui indiquent la version Unicode et la culture spécifique utilisée pour la comparaison de chaînes. La propriété FullVersion est une valeur numérique arbitraire qui reflète la version Unicode utilisée pour la comparaison de chaînes, et la propriété SortId est une valeur arbitraire Guid qui reflète la culture dont les conventions sont utilisées pour la comparaison de chaînes. Les valeurs de ces deux propriétés sont importantes uniquement lorsque vous comparez deux objets SortVersion en utilisant la méthode Equals, de l’opérateur Equality ou de l’opérateur Inequality.

Vous utilisez généralement un objet SortVersion lors de l’enregistrement ou de la récupération d’une forme de données de chaîne classées et sensibles à la culture, telles que des index ou des chaînes littérales elles-mêmes. Ce processus implique les étapes suivantes :

  1. Lorsque les données de chaîne classées sont enregistrées, les valeurs de propriété FullVersion et SortId sont également enregistrées.

  2. Lorsque les données de chaîne classées sont récupérées, vous pouvez recréer l’objet SortVersion utilisé pour classer les chaînes en appelant le constructeur SortVersion.

  3. Cet objet SortVersion nouvellement instancié est comparé à un objet SortVersion qui reflète la culture dont les conventions sont utilisées pour classer les données de chaîne.

  4. Si les deux objets SortVersion ne sont pas égaux, les données de chaîne doivent être réorganisées.