В чем разница между Convert.ToBoolean (строка) и Boolean.Parse (строка)? - PullRequest
72 голосов
/ 11 августа 2011

В чем разница между двумя методами

Convert.ToBoolean()

и

Boolean.Parse()?

Есть ли основания использовать одинили другой?

Кроме того, есть ли другие методы type.Parse(), на которые мне следует обратить внимание?

Спасибо,

Мэтт

Ответы [ 3 ]

72 голосов
/ 11 августа 2011

Convert.ToBoolean(string) на самом деле вызывает bool.Parse() в любом случае, поэтому для ненулевых string с функциональной разницы нет.(Для нулевых string s Convert.ToBoolean() возвращает false, тогда как bool.Parse() выдает ArgumentNullException.)

Учитывая этот факт, вы должны использовать bool.Parse(), когда уверены, что вашinput не является нулевым, так как вы сохраняете себе одну нулевую проверку.

Convert.ToBoolean(), конечно, имеет ряд других перегрузок, которые позволяют вам генерировать bool из многих других встроенных типов, тогда как Parse() только для string s.

С точки зрения методов type.Parse (), на которые следует обратить внимание, все встроенные числовые типы имеют Parse(), а также TryParse() методы.У DateTime есть такие, а также дополнительные методы ParseExact() / TryParseExact(), которые позволяют указать ожидаемый формат даты.

25 голосов
/ 05 октября 2014

Вот короткая демонстрация:

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 голосов
/ 11 августа 2011

Boolean.Parse() преобразует строковое представление логического логического значения в логическое значение. Convert.ToBoolean() имеет несколько перегрузок , которые преобразуют примитивные типы в их логический эквивалент.

Большинство, если не все, примитивных типов в C # имеют связанный метод * .Parse / Convert.To *, который служит той же цели, что и Boolean.Parse()/Convert.ToBoolean().

...