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 :
drUser["Enrolled"] = (enrolledUsers.FindIndex(x => x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));
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 :
String.Compare(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase) == 0
Alternativement, pour rendre le code plus lisible et moins sujet aux erreurs, vous pouvez utiliser la méthode String.Equals
, comme ceci :
String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)
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!