Convert.ToBoolean(string)和Boolean.Parse(string)有什么区别?

时间:2011-08-11 19:52:56

标签: c# parsing boolean

两种方法有什么区别

Convert.ToBoolean()

Boolean.Parse()

有没有理由使用其中一种?

此外,还有其他type.Parse()方法需要注意吗?

谢谢,

马特

3 个答案:

答案 0 :(得分:71)

无论如何,

Convert.ToBoolean(string)实际上调用bool.Parse(),因此对于非null string,没有功能差异。 (对于null string s,Convert.ToBoolean()返回false,而bool.Parse()则返回ArgumentNullException。)

鉴于这一事实,当您确定输入不为空时,应使用bool.Parse(),因为您自己保存了一个空检查。

Convert.ToBoolean()当然还有许多其他重载,允许您从许多其他内置类型生成bool,而Parse()仅适用于string s

就你应该注意的type.Parse()方法而言,所有内置数值类型都有Parse()个方法和TryParse()方法。 DateTime包含这些内容以及其他ParseExact() / TryParseExact()方法,可让您指定日期的预期格式。

答案 1 :(得分:25)

以下是简短演示:

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

答案 2 :(得分:3)

Boolean.Parse()会将逻辑布尔值的字符串表示形式转换为布尔值。 Convert.ToBoolean()有多个overloads,它将原始类型转换为它们的布尔等价物。

C#中的大多数(如果不是全部)基本类型都有一个关联的* .Parse / Convert.To *方法,其作用与Boolean.Parse()/Convert.ToBoolean()相同。