2011-09-09 52 views

回答

0

您正在使用按位或(|)。你需要邏輯OR(||)。

if (id == null || id == title) 
{ 
    // id is null or id equals title. 
} 

請注意,等號運算符(==)區分大小寫。要進行不區分大小寫的比較,請使用靜態方法String.Compare。

if (id == null || String.Compare(id, title, true) == 0) 
{ 
    // id is null or id equals title (ignoring case). 
} 
+0

另一種方法是使用其中一個返回布爾值而不是數字的String.Equals重寫:'String.Equals(id,title,StringComparison.InvariantCultureIgnoreCase);' – flai

5

我不是一個C#開發,但儘量||代替。的|運營商之間的差異在這裏http://msdn.microsoft.com/en-us/library/aa691310(v=vs.71).aspx解釋

此外,爲==在C#中比較字符串的正確方法是在Java中,你需要使用.equals()

(更新:?顯然|沒什麼用位運算符做)

+1

事實上,他錯過了方法調用的括號,並且他試圖從字符串實例的字符串中調用靜態函數。 – Jamiec

+1

你是對的。 「||」是邏輯OR,「|」是按位OR。 – FishBasketGordo

+0

這與「按位」運算符無關。當應用於'bool'類型的操作數時,'|'是*非短路布爾OR *。 – dlev

10

看起來你正在使用|代替||,我不知道你是否有IsNullOrEmpty定義爲擴展方法,但你mussing的()調用它。或直接撥打String.IsNullOrEmpty

請嘗試以下

(id == title || String.IsNullOrEmpty(id)) ? "class='enabled'" : "" 
+0

@JafedPar - 它說錯誤名稱'String'在當前上下文中不存在 – Rubin

+0

@Rubin嘗試'System.String'或在系統文件的頂部添加'using System;'。或者使用全部小寫'字符串' – JaredPar

+1

@JaredPar:我更喜歡使用string.Empty代替「」。只是爲了可讀性。 – flai

0

如果你想測試,「這個字符串空(或空)或等於另一個字符串」,然後只是說:

if (string.IsNullOrEmpty(id) || id.Equals(title)) 
{ 
    // Code here 
} 

作爲三元操作:

var result = (string.IsNullOrEmpty(id) || id.Equals(title) ? "class='enabled'" : ""; 
0

嘗試像這樣代替:

(id == title) || id.IsNullOrEmpty() ? "class='enabled'" : "" 
相關問題