2011-01-10 23 views
0

我要檢查多個條件在C#中的字符串,但它拋出錯誤說不能使用& &字符串或布爾檢查多個條件爲C#中的字符串

if ((duStart.Trim() != "" && duStart.Trim() != null) &&(duEnd.Trim() != "" && duEnd.Trim() != null)) 
{ 
//do this 
} 
else 
//do that 
+2

`Trim()`不能返回`null`。看看`String.IsNullOrWhiteSpace()`方法。 – SLaks 2011-01-10 20:12:55

+1

您發佈的代碼已編譯。錯誤在別的地方。請張貼您的代碼的相關部分。 – 2011-01-10 20:13:33

回答

2

你給的代碼編譯罰款。下面是一個簡短但完整的程序 - 我已經改變了你的代碼行的空白,但僅此而已:

using System; 

class Test 
{ 
    static void Main() 
    { 
     string duStart = "X"; 
     string duEnd = "X"; 
     if ((duStart.Trim() != "" && duStart.Trim() != null) && 
      (duEnd.Trim() != "" && duEnd.Trim() != null)) 
     { 
      Console.WriteLine("Yes"); 
     } 
    } 
} 

說了:

  • 如果你要使用相同的值(例如duStart的修剪版本),多次計算它似乎沒什麼意義。我會在這裏使用額外的局部變量(trimmedStart,trimmedEnd
  • Trim從來沒有返回null,所以這些測試是毫無意義的。
  • 使用string.IsNullOrWhitespace在這裏可能是一個更好的主意。爲什麼打擾創建你永遠不會使用的字符串?
+0

順便說一句,奇怪的空檢查可能意味着原始duStart和duEnd *可能爲空,如果是這樣的話,檢查必須在 – 2011-01-10 20:18:05

1

您可以通過書面形式簡化的條件:

if(!string.IsNullOrEmpty(duStart.Trim()) && !string.isNullOrEmpty(duEnd.Trim())) 
{ 
} 
0

檢查的第一空爲duStart和duEnd。然後嘗試修剪字符串。修剪不能應用於空值。所以,下面的代碼塊應該爲你工作。

if ((duStart != null && duStart.Trim() != "") && (duEnd != null && duEnd.Trim() != "")) 
{ 
    //do this 
} 
else 
{ 
    //do that 
}