C#if(strValue ==“FALSE”| strValue ==“TRUE”)

时间:2009-07-05 21:52:26

标签: c#

我有一个包含TRUE或FALSE或null值的字符串,这个值是从我无法控制的文本文件中读取的。什么是使用'|'的最佳方式用'if'?请记住strValue也可以为null,如果strValue为null,那么我不想输入if语句。

if (strValue == "FALSE" | strValue == "TRUE")
{
  //do stuff
}

由于

7 个答案:

答案 0 :(得分:20)

if (strValue == "FALSE" || strValue == "TRUE") {
   // ...
}

受益于短路。如果第一个表达式求值为true,则不会尝试第二个表达式。

如果您需要不区分大小写的比较:

if ("FALSE".Equals(strValue, StringComparison.InvariantCultureIgnoreCase) || 
    "TRUE".Equals(strValue, StringComparison.InvariantCultureIgnoreCase)) {
   // ...
}

请注意,在.ToUpper()上调用.ToLower()null会抛出NullReferenceException

答案 1 :(得分:4)

从你的问题来看,听起来你真正关心的是字符串是非空的。然后你有两个选择:

if (!string.IsNullOrEmpty(strValue)) 
{
    //Do stuff with "TRUE" or "FALSE"
}

或者,如果你知道它永远不会是一个空字符串(“”):

if (strValue != null) 
{
    //Do stuff with "TRUE" or "FALSE"
}

我会推荐第一个选择。

答案 2 :(得分:2)

我会认真考虑使用ToUpper,如果它不受您的控制 - 您永远不会知道有人将其更改为"True""true"

if (strValue.ToUpper() == "FALSE" || strValue.ToUpper() == "TRUE") {

}

关于ToUpper和不必要的防御性编程的回答:

原始问题说“从我无法控制的文本文件中读取”,“TRUE或FALSE或null”。据我所知,没有通用的方法在文本文件中指示NULL。在CSV文件中,您可以将,,视为NULL""(空字符串)。在固定宽度的文本文件中,您可以将所有空格视为NULL"""<some spaces>"

所以OP已经做了一些数据转换/解释来达到这一点。

答案 3 :(得分:1)

或者也许:

if (strValue == "FALSE") {
    // do stuff
} else if (strValue == "TRUE") {
    // do other stuff
} else {
    // strValue was NULL or invalid.
}

视您的需要而定。

答案 4 :(得分:1)

您可以将所有这些内容放入单个if语句中:

if (!string.IsNullOrEmpty(strValue) && (strValue == "TRUE" || strValue == "FALSE")
{
  //do stuff
}

首先评估第一个条件,然后评估其他条件。我更喜欢使用显式空检查,以帮助其他可能缺乏经验的开发人员理解代码。

答案 5 :(得分:0)

  
    

如果strValue为null,那么我不想输入if语句

  

如果那个确实是,那你为什么担心“|” (按位或)运算符。

你可以写:


if (strValue != "NULL")
{
}

你可能的意思是使用(逻辑或)运算符“||”关于真或假的价值观。


if (strValue == "TRUE" || strValue == "FALSE")
{
}

我可以继续猜测这些情景,但我确信你会得到它的要点。

答案 6 :(得分:0)

由于只有三个选项“TRUE”,“FALSE”,“null”,我建议使用以下内容:

if(String.Compare(strValue, "null") != 0){
  //do stuff
}

如果您需要最大兼容性且无法依赖输入,则可以使用strValue.toLower()切换strValue。