Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Convert.ToBoolean(字符串)和Boolean.Parse(字符串)之间有什么区别?_C#_Parsing_Boolean - Fatal编程技术网

C# Convert.ToBoolean(字符串)和Boolean.Parse(字符串)之间有什么区别?

C# Convert.ToBoolean(字符串)和Boolean.Parse(字符串)之间有什么区别?,c#,parsing,boolean,C#,Parsing,Boolean,这两种方法有什么区别 Convert.ToBoolean() 及 Boolean.Parse() 有什么理由使用其中一种吗 此外,是否还有其他我应该注意的type.Parse()方法 谢谢 Matt将逻辑布尔值的字符串表示形式转换为布尔值Convert.ToBoolean()具有多个将基元类型转换为其布尔等效类型的函数 C#中的大多数(如果不是全部的话)基元类型都有一个关联的*.Parse/Convert.To*方法,其作用与Boolean.Parse()/Convert.ToBoolean()

这两种方法有什么区别

Convert.ToBoolean()

Boolean.Parse()

有什么理由使用其中一种吗

此外,是否还有其他我应该注意的
type.Parse()
方法

谢谢

Matt将逻辑布尔值的字符串表示形式转换为布尔值
Convert.ToBoolean()
具有多个将基元类型转换为其布尔等效类型的函数

C#中的大多数(如果不是全部的话)基元类型都有一个关联的*.Parse/Convert.To*方法,其作用与
Boolean.Parse()/Convert.ToBoolean()

Convert.ToBoolean(string)
实际上调用了
bool.Parse()
,因此对于非null的
string
没有功能上的区别。(对于null
string
s,
Convert.ToBoolean()
返回
false
,而
bool.Parse()
抛出
ArgumentNullException

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

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


对于type.Parse()方法,您应该注意,所有内置的数值类型都有
Parse()
以及
TryParse()
方法
DateTime
有这些方法,以及附加的
ParseExact()
/
TryParseExact()
方法,这些方法允许您指定日期的预期格式。

以下是简短的演示:

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”


谢谢你提供的细节。因此,这两种方法在性能上没有区别,或者可以说使用Boolean.Parse(string)可以获得非常小的增益@mbrownnyc如果您确定输入不是空字符串,那么使用
Parse()
可以获得非常小的增益(可能无法察觉)。如果您不确定,只需使用
ToBoolean()
,因为它将为您进行检查。如果您不希望空字符串导致false,那么您自己执行检查,然后调用
Parse()
,如果它不是空的。
Convert.ToBoolean(“1”);//格式异常
Console.WriteLine(bool.TrueString); // True
Console.WriteLine(bool.FalseString); // False