Как я могу проверить, совпадают ли две строки или одна из них равна нулю в C # - PullRequest
3 голосов
/ 09 сентября 2011

Я попробовал следующее:

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

Но выдается сообщение «Ошибка 22 оператора» | 'не может применяться к операндам типа «bool» и «группа методов»

Может кто-нибудь сказать мне, что не так. ИД и заголовок являются строками.

Ответы [ 5 ]

10 голосов
/ 09 сентября 2011

Похоже, вы используете | вместо ||, и я не уверен, что вы определили IsNullOrEmpty как метод расширения, но вы используете () для его вызова.Это или просто позвоните String.IsNullOrEmpty напрямую.

Попробуйте следующее

(id == title || String.IsNullOrEmpty(id)) ? "class='enabled'" : ""
5 голосов
/ 09 сентября 2011

Я не разработчик C #, но попробуйте ||вместо |.Разница между операторами объясняется здесь http://msdn.microsoft.com/en-us/library/aa691310(v=vs.71).aspx.

Также, является ли == правильным способом сравнения строк в C #?В Java вам нужно использовать .equals().

(ОБНОВЛЕНО: очевидно | не имеет ничего общего с побитовым оператором).

0 голосов
/ 09 сентября 2011

Вы используете побитовое ИЛИ (|). Вам нужно логическое ИЛИ (||).

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 голосов
/ 09 сентября 2011

Попробуйте вместо этого:

(id == title) || id.IsNullOrEmpty() ? "class='enabled'" : ""
0 голосов
/ 09 сентября 2011

Если вы хотите проверить «Является ли эта строка нулевой (или пустой) или равной другой строке», просто скажите, что:

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

Как троичная операция:

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