簡體   English   中英

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

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

我有一個包含TRUE或FALSE或null值的字符串,該值是從我無法控制的文本文件中讀取的。 使用“ |”的最佳方法是什么 與“如果”? 請記住,strValue也可以為null,如果strValue為null,那么我不想輸入if語句。

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

謝謝

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

受益於短路。 如果第一個表達式的值為true將不嘗試第二個表達式。

如果需要不區分大小寫的比較:

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

請注意,對null調用.ToUpper().ToLower()將拋出NullReferenceException

從您的問題看來,您真正關心的只是字符串不是NOT NULL。 然后,您有兩個選擇:

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

或者,如果您知道它永遠不會是空字符串(“”):

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

我建議首選。

我會認真考慮使用ToUpper如果它不受您的控制-您永遠都不知道何時有人將其更改為"True""true"

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

}

關於ToUpper和不必要的防御性編程的響應:

最初的問題是“從我無法控制的文本文件中讀取”,以及“ TRUE或FALSE或null”。 據我所知,沒有通用的方式在文本文件中指示NULL。 在CSV文件中,您可以將,,視為NULL"" (空字符串)。 例如,在固定寬度的文本文件中,您可以將所有空格都視為NULL"""<some spaces>"

為此,OP已經進行了一些數據轉換/解釋。

也許:

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

根據您的需要。

您可以將它們全部放入單個if語句中:

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

首先要評估第一個條件,然后再評估其他條件。 我更喜歡使用顯式的null檢查,以幫助其他可能經驗不足的開發人員理解代碼。

如果strValue為null,那么我不想輸入if語句

如果確實如此,那您為什么還要擔心“ |” (按位或)運算符。

您可以這樣寫:


if (strValue != "NULL")
{
}

可能的意思是使用(邏輯或)運算符“ ||” 關於真或假值。


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

我可以繼續猜測各種情況,但是我相信您已經明白了要點。

由於只有三個選項“ TRUE”,“ FALSE”,“ null”,我建議使用以下選項:

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

如果需要最大的兼容性並且不能依賴於您的輸入,則可以使用strValue.toLower()切換strValue。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM