Analyser les Booléens ou de vérifier la Chaîne de Valeur
Si j'ai une variable qui tire une chaîne de true
ou false
de la DB
ce qui serait la meilleure façon de vérifier sa valeur?
string value = "false";
if(Boolean.Parse(value)){
DoStuff();
}
Je sais qu'il y a différentes façons de l'analyse de bool - ceci est un exemple
ou
string value = "false";
if(value == "true"){
DoStuff();
}
Je suis en tirant beaucoup de vrai/faux les valeurs de la DB dans string
format, et vous voulez savoir si ces méthodes font aucune différence de performances à tous?
- La méthode est bien, mais de nombreux développeurs préfèrent Bool.TryParse(). La deuxième méthode est une méthode de comparaison de chaînes qui sera un peu plus lent, o(n^2)
Vous devez vous connecter pour publier un commentaire.
Utilisation
Boolean.TryParse
:TryParse
retourne true si la conversion a réussi, false si elle n'a pas pu analyser.bool parsed = Boolean.TryParse(stringToParse, out parsedValue) && parsedValue;
Le seul problème que je vois ici, c'est que le C# n'est sensible à la casse des comparaisons, donc si la base de données de la valeur est "True"
serait de retour faux.
Mais en regardant l'exemple Boolean.Méthode D'Analyse
Bool.Analyser semble un peu plus solide.
Boolean.TryParse()
(voir ma réponse), mais si vous allez pour comparer des chaînes, vous devez utiliserstring.Equals()
au lieu de==
. C'était mon point.==
opérateur appelle justestring.Equals()
, pourquoi pensez-vous que vous devez utiliser à la place? Serait-il de même à l'aide deint.Equals()
au lieu de==
?string
et donc polymorphe différences ne s'appliquent pas. Ainsi, lors de l'utilisation d'unstring
,Equals()
et==
sont exactement les mêmes.Je serais toujours analyser votre demande doit être robuste à l'encontre des valeurs non valides (même si vous "savez" votre base de données sera toujours valide):
Pour assurer l'utilisation
Boolean.TryParse()
, vous permettra d'éviter la casse des problèmes qui peuvent apparaître.Si vous connaissez la chaîne sera valide
"true"
ou"false"
chaîne de votre première méthode est préférable.Sinon, vous pouvez utiliser
Boolean.TryParse
Lors de la demande pour la performance de la version sans l'analyse sera probablement la plus rapide. Mais, comme d'autres déjà suggéré aussi je préfère l'analyse de la solution.
Le coup d'essayer d'analyser la fonction va essayer de convertir la valeur de la chaîne booléen, si elle ne peut pas retourner la valeur de la variable outresult.