[英]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.