解析为布尔值或检查字符串值

如果我有一个从DB中提取truefalse字符串的变量,
哪个是检查其价值的首选方式?

 string value = "false"; if(Boolean.Parse(value)){ DoStuff(); } 

我知道解析bool有不同的方法 – 这是一个例子
要么

 string value = "false"; if(value == "true"){ DoStuff(); } 

我正在以string格式从DB中提取大量的真/假值,并想知道这些方法是否会产生任何性能差异?

使用Boolean.TryParse

 string value = "false"; Boolean parsedValue; if (Boolean.TryParse(value, out parsedValue)) { if (parsedValue) { // do stuff } else { // do other stuff } } else { // unable to parse } 

我在这里看到的唯一问题是C#进行区分大小写的比较,因此如果数据库值为“True”

 (value == "true") 

会返回false。

但是看一下Boolean.Parse方法的例子

 string[] values = { null, String.Empty, "True", "False", "true", "false", " true ", "0", "1", "-1", "string" }; foreach (var value in values) { try { bool flag = Boolean.Parse(value); Console.WriteLine("'{0}' --> {1}", value, flag); } catch (ArgumentException) { Console.WriteLine("Cannot parse a null string."); } catch (FormatException) { Console.WriteLine("Cannot parse '{0}'.", value); } } // The example displays the following output: // Cannot parse a null string. // Cannot parse ''. // 'True' --> True // 'False' --> False // 'true' --> True // 'false' --> False // ' true ' --> True // Cannot parse '0'. // Cannot parse '1'. // Cannot parse '-1'. // Cannot parse 'string'. 

Bool.Parse看起来有点健壮。

我总是会解析它 – 你的应用程序应该对无效值有效(即使你“知道”你的数据库总是有效的):

 bool myVal; if (!Boolean.TryParse(value, out myVal)) { throw new InvalidCastException(...); // Or do something else } 

当然,使用Boolean.TryParse() ,您将避免可能弹出的区分大小写的问题。

如果您知道字符串将是有效的"true""false"字符串,则首选方法。

否则,您可以使用Boolean.TryParse

在要求性能时,没有解析的版本可能会更快。 但正如其他人已经建议我也更喜欢解析解决方案。

 string value = "your text" bool outresult = false; bool resultado = false; resultado = bool.TryParse(value, out outresult); 

try解析函数会尝试将字符串的值转换为boolean,如果它不能返回变量outresult的值。