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

mbr*_*nyc 75 c# parsing boolean

这两种方法有什么区别

Convert.ToBoolean()

Boolean.Parse()

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

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

谢谢,

马特

dle*_*lev 73

Convert.ToBoolean(string)实际上是调用bool.Parse(),所以对于非null strings,没有功能差异.(对于null strings,Convert.ToBoolean()返回false,而bool.Parse()抛出一个ArgumentNullException.)

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

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

在type.Parse方面()方法,你应该去寻找,所有的内置数值类型有Parse()TryParse()方法.DateTime有那些,以及其他ParseExact()/ TryParseExact()方法,它们允许您指定日期的预期格式.


Ser*_*tin 30

这是一个简短的演示:

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
Run Code Online (Sandbox Code Playgroud)

注意:boolTrueString和FalseString 也有两个属性,但要小心,因为bool.TrueString != "true"只有bool.TrueString == "True"

Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
Run Code Online (Sandbox Code Playgroud)

  • `Convert.ToBoolean("1"); // 格式异常` (2认同)