这两种方法有什么不同?
Convert.ToBoolean()
和
Boolean.Parse()
有任何理由使用其中之一吗?
另外,是否还有其他我需要注意的type.Parse()
方法?
谢谢,
哑光
发布于 2011-08-12 03:58:08
不管怎样,Convert.ToBoolean(string)
实际上调用了bool.Parse()
,所以对于非空的string
,没有功能上的区别。(对于null string
,Convert.ToBoolean()
返回false
,而bool.Parse()
抛出ArgumentNullException
。)
鉴于此,当您确定输入不为null时,您应该使用bool.Parse()
,因为您可以省去一次null检查。
当然,Convert.ToBoolean()
还有许多其他重载,允许您从许多其他内置类型生成bool
,而Parse()
仅适用于string
。
就您应该注意的type.Parse()方法而言,所有内置的数值类型都有Parse()
和TryParse()
方法。DateTime
提供了这些以及额外的ParseExact()
/TryParseExact()
方法,这些方法允许您为日期指定预期的格式。
发布于 2014-10-05 20:29:11
下面是一个简短的演示:
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
发布于 2011-08-12 03:54:49
Boolean.Parse()
会将逻辑布尔值的字符串表示形式转换为布尔值。Convert.ToBoolean()
有多个overloads,可以将原始类型转换为它们的布尔型等效项。
C#中的大多数原语类型(如果不是全部的话)都有一个与Boolean.Parse()/Convert.ToBoolean()
具有相同用途的关联的*.Parse/Convert.To*方法。
https://stackoverflow.com/questions/7031964
复制相似问题