Maison >développement back-end >C++ >Comment effectuer correctement des comparaisons de chaînes insensibles à la casse en C# ?
Comparaison de chaînes insensibles à la casse en C#
Lorsque vous effectuez des comparaisons de chaînes en C#, vous devez généralement ignorer la casse. Bien que vous puissiez initialement envisager d'utiliser la méthode StringComparison.OrdinalIgnoreCase
avec Equals
, cela peut conduire à des résultats inattendus.
Dans l'exemple de code suivant :
<code class="language-csharp">drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));</code>
Le problème est d'utiliser la méthode Equals
avec une expression lambda. L'expression lambda attend une expression booléenne, mais la méthode Equals
renvoie void.
Dans .NET Framework 4 et supérieur, il est recommandé d'utiliser la méthode String.Compare
combinée avec StringComparison.OrdinalIgnoreCase
pour une comparaison de chaînes insensible à la casse, comme indiqué ci-dessous :
<code class="language-csharp">String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0</code>
Alternativement, pour rendre le code plus lisible et moins sujet aux erreurs, vous pouvez utiliser la méthode String.Equals
, comme ceci :
<code class="language-csharp">String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) </code>
Ces méthodes garantissent que les comparaisons de chaînes sont effectuées sans tenir compte de la casse, fournissant ainsi des résultats précis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!