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 *方法。