Quelle est la différence entre les deux méthodes
Convert.ToBoolean()
et
Boolean.Parse()
?
Y a-t-il une raison d'utiliser l'un ou l'autre?
De plus, existe-t-il d'autres méthodes type.Parse()
à surveiller?
Merci,
Mat
Convert.ToBoolean(string)
appelle en fait bool.Parse()
de toute façon, donc pour les string
s non nuls, il n'y a pas de différence fonctionnelle. (Pour null string
s, Convert.ToBoolean()
renvoie false
, tandis que bool.Parse()
lance un ArgumentNullException
.)
Dans ce cas, vous devez utiliser bool.Parse()
lorsque vous êtes certain que votre entrée n'est pas nulle, car vous vous enregistrez une seule vérification nulle.
Convert.ToBoolean()
a bien sûr un certain nombre d'autres surcharges qui vous permettent de générer un bool
à partir de nombreux autres types intégrés, tandis que Parse()
est pour string
s uniquement.
En termes de méthodes type.Parse () que vous devez rechercher, tous les types numériques intégrés ont des méthodes Parse()
ainsi que TryParse()
. DateTime
en a, ainsi que les méthodes supplémentaires ParseExact()
/TryParseExact()
, qui vous permettent de spécifier un format attendu pour la date.
Voici la courte démo:
object ex1 = "True";
Console.WriteLine(Convert.ToBoolean(ex1)); // True
Console.WriteLine(bool.Parse(ex1.ToString())); // True
object ex2 = "true";
Console.WriteLine(Convert.ToBoolean(ex2)); // True
Console.WriteLine(bool.Parse(ex2.ToString())); // True
object ex3 = 1;
Console.WriteLine(Convert.ToBoolean(ex3)); // True
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException
object ex3 = "1";
Console.WriteLine(Convert.ToBoolean(ex3)); // An unhandled exception of type 'System.FormatException' occurred
Console.WriteLine(bool.Parse(ex3.ToString())); // Unhandled Exception: System.FormatException
object ex4 = "False";
Console.WriteLine(Convert.ToBoolean(ex4)); // False
Console.WriteLine(bool.Parse(ex4.ToString())); // False
object ex5 = "false";
Console.WriteLine(Convert.ToBoolean(ex5)); // False
Console.WriteLine(bool.Parse(ex5.ToString())); // False
object ex6 = 0;
Console.WriteLine(Convert.ToBoolean(ex6)); // False
Console.WriteLine(bool.Parse(ex6.ToString())); // Unhandled Exception: System.FormatException
object ex7 = null;
Console.WriteLine(Convert.ToBoolean(ex7)); // False
Console.WriteLine(bool.Parse(ex7.ToString())); // Unhandled Exception: System.NullReferenceException
Remarque: Il existe également deux propriétés de bool
TrueString et FalseString, mais soyez prudent, car bool.TrueString != "true"
, seulement bool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
Boolean.Parse()
convertira une représentation sous forme de chaîne d'une valeur booléenne logique en une valeur booléenne. Convert.ToBoolean()
a plusieurs surcharges qui convertiront les types primitifs en leur équivalent booléen.
La plupart, sinon la totalité, des types primitifs en C # ont une méthode * .Parse/Convert.To * associée qui remplit la même fonction que Boolean.Parse()/Convert.ToBoolean()
.