Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article fournit des remarques supplémentaires à la documentation de référence de cette API.
Comparaison de chaînes et de tri dans .NET Framework
Par le biais de .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 des chaînes et qui sont basées sur une version particulière d’Unicode. Dans .NET Framework 4.5 et versions ultérieures, la présence de ces tables dépend du système d’exploitation :
- Sur Windows 7 et les versions précédentes, 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 de chaînes et de classement 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 Unicode prises en charge s’applique uniquement à la comparaison de caractères et au tri ; elle ne s’applique pas à la classification des caractères Unicode par catégorie.
| Version du .NET Framework | Système d’exploitation | La version 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 de chaînes et l’ordre dépend de la version du système d’exploitation, les résultats de la comparaison de chaînes peuvent différer même pour les applications qui s’exécutent sur une version spécifique de .NET Framework.
Comparaison de chaînes et de tri dans .NET Core
Toutes les versions de .NET (Core) reposent sur le système d’exploitation sous-jacent lors de l’exécution de comparaisons de chaînes. Par conséquent, les résultats d’une comparaison de chaînes ou de l’ordre dans lequel les chaînes sont triées dépendent 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 composants internationaux pour les bibliothèques Unicode fournissent l’implémentation pour la comparaison et le tri des API.
Utiliser la classe SortVersion
La SortVersion classe fournit des informations sur la version Unicode utilisée par .NET pour la comparaison de chaînes et l’ordre. Il permet aux développeurs d’écrire des applications capables de détecter et de gérer correctement les modifications dans la version d’Unicode utilisée pour comparer et trier les chaînes d’une application.
Vous pouvez instancier un SortVersion objet 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 SortVersion objet à partir de données enregistrées.
- En récupérant la valeur de la CompareInfo.Version propriété. Cette propriété fournit des informations sur la version Unicode utilisée par l’implémentation .NET sur laquelle l’application s’exécute.
La SortVersion classe a deux propriétés et FullVersionSortId, qui indiquent la version Unicode et la culture spécifique utilisée pour la comparaison de chaînes. La FullVersion propriété est une valeur numérique arbitraire qui reflète la version Unicode utilisée pour la comparaison de chaînes, et la SortId propriété est 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 SortVersion objets à l’aide de la Equals méthode, 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 de données de chaîne structurées et sensibles à la culture, telles que des index ou des chaînes littérales. Cela nécessite les étapes suivantes :
Lorsque les données de chaîne ordonnées sont enregistrées, les valeurs de propriété FullVersion et SortId sont également enregistrées.
Lorsque les données de chaîne ordonnées sont récupérées, vous pouvez recréer l’objet SortVersion utilisé pour classer les chaînes en appelant le SortVersion constructeur.
Cet objet nouvellement instancié SortVersion est comparé à un SortVersion objet qui reflète la culture dont les conventions sont utilisées pour classer les données de chaîne.
Si les deux SortVersion objets ne sont pas égaux, les données de chaîne doivent être réorganisées.