我試過如下:我如何檢查是否兩個字符串匹配,或者如果一個是在C#空
(id == title) | (id.IsNullOrEmpty) ? "class='enabled'" : ""
但是它給出了一個消息,說「錯誤22運算符‘|’不能應用於類型「布爾」和「法團」的操作數
誰能告訴我什麼是錯的。這兩個ID和標題字符串。
我試過如下:我如何檢查是否兩個字符串匹配,或者如果一個是在C#空
(id == title) | (id.IsNullOrEmpty) ? "class='enabled'" : ""
但是它給出了一個消息,說「錯誤22運算符‘|’不能應用於類型「布爾」和「法團」的操作數
誰能告訴我什麼是錯的。這兩個ID和標題字符串。
您正在使用按位或(|)。你需要邏輯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).
}
另一種方法是使用其中一個返回布爾值而不是數字的String.Equals重寫:'String.Equals(id,title,StringComparison.InvariantCultureIgnoreCase);' – flai
我不是一個C#開發,但儘量||代替。的|運營商之間的差異在這裏http://msdn.microsoft.com/en-us/library/aa691310(v=vs.71).aspx解釋
此外,爲==
在C#中比較字符串的正確方法是在Java中,你需要使用.equals()
(更新:?顯然|沒什麼用位運算符做)
事實上,他錯過了方法調用的括號,並且他試圖從字符串實例的字符串中調用靜態函數。 – Jamiec
你是對的。 「||」是邏輯OR,「|」是按位OR。 – FishBasketGordo
這與「按位」運算符無關。當應用於'bool'類型的操作數時,'|'是*非短路布爾OR *。 – dlev
看起來你正在使用|
代替||
,我不知道你是否有IsNullOrEmpty
定義爲擴展方法,但你mussing的()
調用它。或直接撥打String.IsNullOrEmpty
。
請嘗試以下
(id == title || String.IsNullOrEmpty(id)) ? "class='enabled'" : ""
如果你想測試,「這個字符串空(或空)或等於另一個字符串」,然後只是說:
if (string.IsNullOrEmpty(id) || id.Equals(title))
{
// Code here
}
作爲三元操作:
var result = (string.IsNullOrEmpty(id) || id.Equals(title) ? "class='enabled'" : "";
嘗試像這樣代替:
(id == title) || id.IsNullOrEmpty() ? "class='enabled'" : ""
一個好的做法是在可能的情況下首先測試null。 – Mathieu