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

时间:2013-08-20 07:12:31

标签: c# boolean

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

string value = "false";

if(Boolean.Parse(value)){
   DoStuff();
}

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

string value = "false";

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

我以string格式从数据库中提取了很多真/假值,想知道这些方法是否会产生任何性能差异?

8 个答案:

答案 0 :(得分:24)

使用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
}

答案 1 :(得分:3)

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

(value == "true")

会返回false。

但是看一下例子Boolean.Parse Method

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看起来更健壮了。

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

否则,您可以使用Boolean.TryParse

答案 5 :(得分:0)

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

答案 6 :(得分:0)

在 C# 7.0+ 中,您可以使用 inline variable declaration.

string value = "false";

if (bool.TryParse(value, out bool parsedValue))
{
    if (parsedValue)
    {
        // do stuff
    }
    else
    {
        // do other stuff
    }
}
else
{
    // unable to parse
}

答案 7 :(得分:-1)

string value = "your text"
bool outresult = false;
bool resultado = false;

resultado = bool.TryParse(value, out outresult);

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