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

这两种方法有什么区别

Convert.ToBoolean()

Boolean.Parse()

有没有任何理由使用这个或另一个?

另外,还有其他的type.Parse()方法,我应该注意吗?

谢谢,

马特

Convert.ToBoolean(string)实际上调用bool.Parse() ,所以对于非空string s,没有function差异。 (对于空string s, Convert.ToBoolean()返回false ,而bool.Parse()抛出一个ArgumentNullException 。)

鉴于这个事实,当你确定你的input不是null时,你应该使用bool.Parse() ,因为你保存了一个空的检查。

Convert.ToBoolean()当然有一些其他的重载,允许你从许多其他的内buildtypes生成一个bool ,而Parse()仅用于string s。

就type.Parse()方法而言,您应该注意,所有内置的数字types都有Parse()以及TryParse()方法。 DateTime有这些,以及额外的ParseExact() / TryParseExact()方法,它们允许您指定date的预期格式。

这里是简短的演示:

 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 

Boolean.Parse()会将逻辑布尔值的string表示转换为布尔值。 Convert.ToBoolean()有多个重载 ,将原始types转换为它们的布尔等值。

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