解析为布尔值或检查字符串值
本文关键字:检查 字符串 布尔值 | 更新日期: 2023-09-27 18:28:14
如果我有一个变量从DB中提取一个true
或false
字符串,
检查其价值的首选方式是哪一种?
string value = "false";
if(Boolean.Parse(value)){
DoStuff();
}
我知道解析bool有不同的方法-这是一个例子
或
string value = "false";
if(value == "true"){
DoStuff();
}
我以string
格式从数据库中提取了很多真/假值,想知道这些方法是否会带来任何性能差异?
使用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。
但是看看例子布尔分析方法
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
在C#7.0+中,您可以使用内联变量声明。
string value = "false";
if (bool.TryParse(value, out bool parsedValue))
{
if (parsedValue)
{
// do stuff
}
else
{
// do other stuff
}
}
else
{
// unable to parse
}
string value = "your text"
bool outresult = false;
bool resultado = false;
resultado = bool.TryParse(value, out outresult);
如果try-parse函数不能返回变量outresult的值,它将尝试将字符串的值转换为布尔值。