В чем разница между Convert.ToBoolean(string) и Boolean.Parse(string)?
В чем разница между двумя методами
Convert.ToBoolean()
и
Boolean.Parse()
?
Есть ли какая-нибудь причина для использования того или другого?
Кроме того, существуют ли какие-либо другие методы type.Parse()
, которые я должен соблюдать?
Спасибо,
Matt
Ответы
Ответ 1
Convert.ToBoolean(string)
на самом деле вызывает bool.Parse()
, так что для non-null string
s функциональной разницы нет. (Для null string
s, Convert.ToBoolean()
возвращает false
, тогда как bool.Parse()
выбрасывает ArgumentNullException
.)
Учитывая этот факт, вы должны использовать bool.Parse()
, когда вы уверены, что ваш ввод не является нулевым, поскольку вы сохраняете одну нулевую проверку.
Convert.ToBoolean()
, конечно, имеет ряд других перегрузок, которые позволяют вам генерировать bool
из многих других встроенных типов, тогда как Parse()
используется только для string
.
В отношении методов типа. Parsse(), которые вы должны учитывать, все встроенные числовые типы имеют Parse()
, а также методы TryParse()
. DateTime
имеет те, а также дополнительные методы ParseExact()
/TryParseExact()
, которые позволяют указать ожидаемый формат даты.
Ответ 2
Вот короткая демонстрация:
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
Примечание: Есть также два свойства bool TrueString и FalseString, но будьте осторожны, потому что bool.TrueString!= "true", только bool.TrueString == "True"
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
Ответ 3
Boolean.Parse()
преобразует строковое представление логического логического значения в значение boolean. Convert.ToBoolean()
имеет несколько перегрузок, которые преобразуют примитивные типы в их булевский эквивалент.
Большинство, если не все, примитивных типов в С# имеют связанный метод *.Parse/Convert.To *, который выполняет те же самые цели, что и Boolean.Parse()/Convert.ToBoolean()
.