Сравнение строк производится с использованием порядковых значений символов в строке, но без учета регистра. При этом лексикографический порядок может нарушиться, а условные обозначения, принятые в отдельной культурной среде, игнорируются
В любом случае метод
Compare() возвращает отрицательное значение, если первая сравниваемая строка оказывается меньше второй; положительное значение, если первая сравниваемая строка больше второй; и наконец, нуль, если обе сравниваемые строки равны. Несмотря на то что методCompare() возвращает нуль, если сравниваемые строки равны, для определения равенства символьных строк, как правило, лучше пользоваться методомEquals() или же оператором = =. Дело в том, что методCompare() определяет равенство сравниваемых строк на основании порядка их сортировки. Так, если выполняется сравнение строк с учетом культурной среды, то обе строки могут оказаться одинаковыми по порядку их сортировки, но не равными по существу. По умолчанию равенство строк определяется в методеEquals(), исходя из порядковых значений символов и без учета культурной среды. Следовательно, по умолчанию обе строки сравниваются в этом методе на абсолютное, посимвольное равенство подобно тому, как это делается в операторе = =.Несмотря на большую универсальность метода Compare (), для простого порядкового сравнения символьных строк проще пользоваться методом CompareOrdinal (). И наконец, следует иметь в виду, что метод CompareTo () выполняет сравнение строк только с учетом культурной среды. На момент написания этой книги отсутствовали перегружаемые варианты этого метода, позволявшие указывать другой способ сравнения символьных строк.
В приведенной ниже программе демонстрируется применение методов
Compare (), Equals(), CompareOrdinal(), а также операторов = = и ! = для сравнения символьных строк. Обратите внимание на то, что два первых примера сравнения наглядно демонстрируют отличия между сравнением строк с учетом культурной среды и порядковым сравнением в англоязычной среде.// Продемонстрировать разные способы сравнения символьных строк.
using System;
class CompareDemo { 1
static void Main() { string strl = "alpha"; string str2 = "Alpha";string str3 = "Beta"; string str4 = "alpha"; string str5 = "alpha, beta"; int result;
// Сначала продемонстрировать отличия между сравнением строк
// с учетом культурной среды и порядковым сравнением.
result = String.Compare(strl, str2, StringComparison.CurrentCulture)
Console.Write("Сравнение строк с учетом культурной среды: ");
if(result < 0)
Console.WriteLine(strl + " меньше " + str2); else if(result > 0)
Console.WriteLine(strl + " больше " + str2); else