两种方法有什么区别
Convert.ToBoolean()
和
Boolean.Parse()
?
有没有理由使用其中一种?
此外,还有其他type.Parse()
方法需要注意吗?
谢谢,
马特
答案 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()
相同。