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
Antworten:
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 einfach ToBoolean()
, 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 rufen Parse()
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, da bool.TrueString != "true"
nurbool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
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()
.