Подтвердить что ты не робот

В чем разница между Convert.ToBoolean(string) и Boolean.Parse(string)?

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

Convert.ToBoolean()

и

Boolean.Parse()?

Есть ли какая-нибудь причина для использования того или другого?

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

Спасибо,

Matt

4b9b3361

Ответ 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().