首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Convert.ToBoolean(字符串)和Boolean.Parse(字符串)有什么区别?

Convert.ToBoolean(字符串)和Boolean.Parse(字符串)有什么区别?
EN

Stack Overflow用户
提问于 2011-08-12 03:52:56
回答 3查看 51K关注 0票数 85

这两种方法有什么不同?

Convert.ToBoolean()

Boolean.Parse()

有任何理由使用其中之一吗?

另外,是否还有其他我需要注意的type.Parse()方法?

谢谢,

哑光

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-12 03:58:08

不管怎样,Convert.ToBoolean(string)实际上调用了bool.Parse(),所以对于非空的string,没有功能上的区别。(对于null stringConvert.ToBoolean()返回false,而bool.Parse()抛出ArgumentNullException。)

鉴于此,当您确定输入不为null时,您应该使用bool.Parse(),因为您可以省去一次null检查。

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

就您应该注意的type.Parse()方法而言,所有内置的数值类型都有Parse()TryParse()方法。DateTime提供了这些以及额外的ParseExact()/TryParseExact()方法,这些方法允许您为日期指定预期的格式。

票数 86
EN

Stack Overflow用户

发布于 2014-10-05 20:29:11

下面是一个简短的演示:

代码语言:javascript
复制
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"

代码语言:javascript
复制
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False
票数 39
EN

Stack Overflow用户

发布于 2011-08-12 03:54:49

Boolean.Parse()会将逻辑布尔值的字符串表示形式转换为布尔值。Convert.ToBoolean()有多个overloads,可以将原始类型转换为它们的布尔型等效项。

C#中的大多数原语类型(如果不是全部的话)都有一个与Boolean.Parse()/Convert.ToBoolean()具有相同用途的关联的*.Parse/Convert.To*方法。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7031964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档