В чем разница между Convert.ToBoolean (строка) и Boolean.Разбор (строка)?


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

Convert.ToBoolean()

и

Boolean.Parse()?

есть ли причина, чтобы использовать один или другой?

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

спасибо,

матовая

3 64

3 ответа:

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

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

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

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

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

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.Правда != "true", только bool.TrueString = = "True"

Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False

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

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