Was ist der Unterschied zwischen den beiden Methoden
Convert.ToBoolean()
und
Boolean.Parse()
?
Gibt es einen Grund, den einen oder anderen zu benutzen?
Gibt es noch andere type.Parse()
Methoden, auf die ich achten sollte?
Vielen Dank,
Matt
Convert.ToBoolean(string)
ruft eigentlich bool.Parse()
sowieso auf, also gibt es für Nicht-Nullen string
keinen funktionalen Unterschied. (Gibt für null string
s Convert.ToBoolean()
zurück false
, wohingegen bool.Parse()
an ArgumentNullException
.)
Angesichts dieser Tatsache sollten Sie verwenden, bool.Parse()
wenn Sie sicher sind, dass Ihre Eingabe nicht null ist, da Sie sich eine Nullprüfung sparen.
Convert.ToBoolean()
Natürlich gibt es eine Reihe anderer Überladungen, mit denen Sie bool
aus vielen anderen integrierten Typen eine generieren können, während dies Parse()
nur für string
s gilt.
In Bezug auf type.Parse () -Methoden, auf die Sie achten sollten, haben alle integrierten numerischen Typen Parse()
sowie TryParse()
Methoden. DateTime
hat diese sowie die zusätzlichen ParseExact()
/ TryParseExact()
Methoden, mit denen Sie ein erwartetes Format für das Datum angeben können.
Parse()
wenn Sie sicher sind, dass die Eingabe keine Nullzeichenfolge ist . Wenn Sie sich nicht sicher sind, verwenden Sie einfachToBoolean()
, da dies die Prüfung für Sie erledigt. Und wenn Sie nicht möchten, dass eine Nullzeichenfolge zu false führt, führen Sie die Überprüfung selbst durch und rufenParse()
Sie dann auf, wenn sie nicht null ist.Hier ist die kurze Demo:
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
Hinweis: Es gibt auch zwei Eigenschaften von
bool
TrueString und FalseString. Seien Sie jedoch vorsichtig, dabool.TrueString != "true"
nurbool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True Console.WriteLine(bool.FalseString); // False
quelle
Convert.ToBoolean("1"); // Format Exception
Boolean.Parse()
konvertiert eine Zeichenfolgendarstellung eines logischen booleschen Werts in einen booleschen Wert.Convert.ToBoolean()
hat mehrere Überladungen , die primitive Typen in ihre booleschen Entsprechungen konvertieren.Den meisten, wenn nicht allen primitiven Typen in C # ist eine * .Parse / Convert.To * -Methode zugeordnet, die denselben Zweck erfüllt wie
Boolean.Parse()/Convert.ToBoolean()
.quelle