Quelle est la différence entre InvariantCulture et Ordinal lors de la comparaison de chaînes en C#?
Bonjour à tous ! Je suis un développeur C# débutant et j'ai rencontré un problème de comparaison de chaînes. Dans la documentation Microsoft, je vois souvent deux méthodes : `String.Compare` avec `StringComparison.InvariantCulture` et `StringComparison.Ordinal`. Mais je ne comprends pas bien quelle est la différence entre elles et quand utiliser laquelle.
Par exemple, j'ai ce code :
```csharp
string str1 = "Straße";
string str2 = "STRASSE";
bool result1 = string.Equals(str1, str2, StringComparison.InvariantCultureIgnoreCase);
bool result2 = string.Equals(str1, str2, StringComparison.OrdinalIgnoreCase);
Console.WriteLine($"InvariantCulture: {result1}"); // True
Console.WriteLine($"Ordinal: {result2}"); // False
```
Pourquoi avec `InvariantCulture` les chaînes sont-elles considérées comme égales, mais pas avec `Ordinal` ? Pourtant ce sont des chaînes différentes ! Et aussi : si je compare simplement des logins d'utilisateurs ou des noms de fichiers, quel choix dois-je faire ? J'ai entendu dire que `Ordinal` est plus rapide, mais j'ai peur de me tromper et d'obtenir des bugs avec différents
No answers yet.
Connectez-vous pour laisser une réponse
Blogs