Ответ 1
В отличие от Java, строки С# переопределяют оператор ==
:
if (str1 == str2)
Если вам требуется сравнение без учета регистра:
if (String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)
Я часто использую этот код для сравнения строки:
if(!string.IsNullOrEmpty(str1) && str1.Equals(str2)){
//they are equal, do my thing
}
Сначала обрабатывается нулевой регистр и т.д.
Есть ли более чистый способ выполнения сравнения строк, возможно, с помощью одного вызова метода, который будет обрабатывать возможные значения NULL? Я просто хочу знать, что строки не равны, если значение тестирования равно нулю.
(У меня есть dejavu, что я, возможно, спросил об этом раньше, я прошу прощения, если так)
Обновление. В моем случае str2 является известной хорошей строкой для сравнения, поэтому мне не нужно проверять ее на null. str1 - это "неизвестная" строка, которая может быть нулевой, поэтому я хочу сказать, что "str1 не равно str2" в случаях, когда str1 имеет значение null...
В отличие от Java, строки С# переопределяют оператор ==
:
if (str1 == str2)
Если вам требуется сравнение без учета регистра:
if (String.Equals(str1, str2, StringComparison.OrdinalIgnoreCase)
Если вы не хотите рассматривать две строки null
как равные друг другу, ваш код оптимален.
Если, с другой стороны, вы хотите рассматривать значения null
равными друг другу, вы можете использовать
object.Equals(str1, str2)
для более "симметричного" подхода, который также обрабатывает значения null
.
Я знаю, что это несколько лет, и я думаю, что решение от dasblinkenlight функционально идеально подходит для того, что вы просили. Однако я предпочитаю этот код для удобства чтения:
String.Equals(str1, str2)
Вы можете использовать этот код
object.Equals(str1, str2)
Нет встроенного способа сделать это, но вы можете создать метод расширения, чтобы инкапсулировать это.
public static StringExtensions
{
public static Boolean IsNotNullAndEquals(this string str1, string str2)
{
return !string.IsNullOrEmpty(str1) && str1.Equals(str2)
}
}
то используйте его следующим образом:
str1.IsNotNullAndEquals(str2);
Именование будет вашим самым трудным здесь IMO... так как вам нужно сообщить, что вы всего лишь проверяете null str1
. При использовании в качестве метода расширения он читается достаточно хорошо, но если он используется как обычный статический, то он также не передает это.