85 votes

Quelle est la différence entre Convert.ToBoolean (string) et Boolean.Parse (string)?

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, y a-t-il d'autres méthodes type.Parse() que je devrais surveiller?

Merci,

Mat

85voto

dlev Points 28160

Convert.ToBoolean(string) fait des appels bool.Parse() de toute façon, donc pour les non-nulles strings, il n'y a pas de différence fonctionnelle. (Pour les nuls strings, Convert.ToBoolean() retours false, alors que bool.Parse() jette un ArgumentNullException.)

Compte tenu de ce fait, vous devez utiliser bool.Parse() lorsque vous êtes certain que votre entrée n'est pas nulle, puisque vous enregistrer vous-même un nul vérifier.

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, alors que Parse() est strings seulement.

En termes de type.Parse() méthodes que vous devriez regarder dehors pour, tous les types numériques intégrés ont Parse() ainsi que TryParse() méthodes. DateTime a celles-ci, ainsi que les autres ParseExact()/TryParseExact() méthodes qui vous permettent de spécifier un format attendu pour la date.

38voto

Sergey Malyutin Points 128

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 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", uniquement bool.TrueString == "True"

     Console.WriteLine(bool.TrueString); // True
    Console.WriteLine(bool.FalseString); // False
 

3voto

csano Points 7039

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 des types primitifs de C #, sinon tous, ont une méthode * .Parse / Convert.To * associée qui remplit le même objectif que Boolean.Parse () / Convert.ToBoolean ().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X