Я думаю, что при реализации другого класса он выглядит намного до дерева, чтобы получить надежную реализацию метода. Поскольку нет метода, называемого, он использует базовый класс. [f1]
, что догадка я не про в .Net
Попробуйте это:
string.Equals(a, b, StringComparison.CurrentCultureIgnoreCase);
string.Equals(StringA, StringB, StringComparison.CurrentCultureIgnoreCase);
if (StringA.ToUpperInvariant() == StringB.ToUpperInvariant()) {
Люди сообщают, что ToUpperInvariant () быстрее, чем ToLowerInvariant ().
System.Collections.CaseInsensitiveComparer
или
System.StringComparer.OrdinalIgnoreCase
Можно использовать
if (stringA.equals(StringB, StringComparison.CurrentCultureIgnoreCase))
Оператор? Нет, но я думаю, что можно изменить культуру так, чтобы сравнение строк не было чувствительно к регистру.
// you'll want to change this...
System.Threading.Thread.CurrentThread.CurrentCulture
// and you'll want to custimize this
System.Globalization.CultureInfo.CompareInfo
я уверен, что это изменит способ, которым строки сравниваются, равняется оператору.
или
if (StringA.Equals(StringB, StringComparison.CurrentCultureIgnoreCase)) {
, но необходимо быть уверены, что StringA не является пустым. Так, вероятно, лучше tu использование:
string.Equals(StringA , StringB, StringComparison.CurrentCultureIgnoreCase);
, поскольку John предложил
РЕДАКТИРОВАНИЕ: исправленный ошибка
Существует много свойств на StringComparer
статический класс, которые возвращают компараторы для любого типа чувствительности к регистру, которую Вы могли бы хотеть:
, Например, можно звонить
StringComparer.CurrentCultureIgnoreCase.Equals(string1, string2)
, или
StringComparer.CurrentCultureIgnoreCase.Compare(string1, string2)
Это немного более чисто, чем string.Equals
или string.Compare
перегрузки, которые берут StringComparison
аргумент.