解析为布尔值或检查字符串值
如果我有一个从DB中提取true
或false
字符串的变量,
哪个是检查其价值的首选方式?
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的值。