Chaîne de l'égalité avec la gestion des valeurs null
Je vais souvent utiliser ce code pour comparer une chaîne:
if(!string.IsNullOrEmpty(str1) && str1.Equals(str2)){
//they are equal, do my thing
}
Cela gère la valeur null premier, etc.
Est-il le moyen le plus propre à faire de comparaison de chaînes de caractères, peut-être avec un seul appel de méthode qui permettra de gérer les éventuelles valeurs null? Je veux simplement savoir que les chaînes ne sont pas égales si le test de valeur est null.
(Je vais avoir dejavu que j'ai demandé cela avant, je m'excuse si si)
Mise à jour: Dans mon cas, la str2 est une bonne chaîne pour comparer, je n'ai pas besoin de le vérifier pour null. str1 est "l'inconnu" de la chaîne qui peut être nulle, donc j'ai envie de dire "str1 n'est pas égale à str2" dans le cas où str1 est nul...
- Votre code est faux; il retournera true si
str1
est nulle etstr2
ne l'est pas. - En fait, je pense que c'est ce qu'il veut. Au moins basée sur la description
- J'ai une ! là, il ne fera que continuer si la chaîne à comparer n'est PAS null/vide. righto?
- apparemment c# 6 a maintenant des fonctions pour la manipulation de ce
Vous devez vous connecter pour publier un commentaire.
Contrairement à Java, C# chaînes de remplacer le
==
opérateur:Si vous voulez une comparaison sensible à la casse:
null
Si vous ne pas voulez traiter deux
null
chaînes de caractères comme des égaux les uns aux autres, votre code est optimal.Si, d'autre part, vous voulez traiter
null
valeurs égales les unes aux autres, vous pouvez utiliserpour un aspect plus "symétrique" qui gère aussi
null
valeurs.object.Equals(str1 ?? "", str2 ?? "")
expression.Je sais que c'est quelques années et je pense que la solution de dasblinkenlight est fonctionnel, parfait pour ce que vous avez demandé.
Cependant, je préfère ce code pour plus de lisibilité raisons:
Il n'est pas construit de façon à ce faire, mais vous pouvez créer une méthode d'extension pour encapsuler cette.
puis l'utiliser comme ceci:
De nommage est va être votre chose la plus difficile ici IMO...car vous avez besoin de transmettre que vous êtes seulement null vérification
str1
. Lorsqu'il est utilisé comme une méthode d'extension, il se lit assez bien, mais si elle est utilisée régulièrement comme statique, alors il ne rend pas aussi bien.str1
est null. La raison en est parce que c'est juste sucre syntaxique pour appelerStringExtensions.IsNotNullAndEquals(str1, str2)
Il ne RESSEMBLE, c'est un appel de méthode surstr1
Vous pouvez utiliser ce code
Cela fera: