Stringявляется классом (а не структурой), а тип string — ссылочный. Однако операторы == и != переопределены для строк и работают именно так, как этого можно ожидать. Выражения:
(str == "New York") и (str != "New Jersey")
возвращают значения типа bool, зависящее от чувствительного к регистру посимвольного сравнения.
В классе Sitingопределены несколько методов, возвращающих boolв результате чувствительного к регистру строкового сравнения;
bool Equals(string str);
bool Equals(object obj);
bool StartsWith(string str);
bool EndsWith(string str);
Например, если строка определена:
string str = "The end of time";
str.StartsWith("The") возвращает true, но:
str.StartsWith(“the") возвращает false.
Существует и статическая версия метода Equals.
bool Equals(string str1, string str2);
Например, вместо:
if (str == "New York") можно использовать:
if (Equals(str, "New York"))
Остальные методы сравнения строк, реализованные в классе String, возвращают целое значение в зависимости от того, является ли одна строка большей, меньшей или равной другой:
strl < str2 -т
strl == str2 0
strl > sfr2 m
Вот результат числового сравнения некоторых символов:
D < E < F < d < e < f < E < E < E < E < e < e < e < e
А вот результат лексического сравнения;
d < D < e < E < e < E < e < E < e < E < e < E < f < F
По умолчанию лексическое сравнение чувствительно к регистру, только если возвращаемое значение при нечувствительном к регистру сравнении было бы 0. В противном случае сравнение нечувствительно к регистру.
Динамический метод Сотраге'Го выполняет лексическое сравнение экземпляра строки и аргумента:
int CompareTo(string str2);
int CompareTo(object obj2);
Первой строкой является строковый объект, для которого вы вызываете CompareTo.
например:
strl.CompareTo(str2);
Все прочие методы сравнения — статические. Метод CompareOrdinal выполняет строгое числовое сравнение на основе значения символов:
int CompareOrdinal(string str1, string str2);
int CompareOrdinal(string str1, int iStartlndexl, string str2, int iStartIndex2, int iCount);
Статический метод Compare выполняет лексическое сравнение:
int Compare(string str1, string str2);
int Compare(string str1, string str2, bool blgnoreCase);
int Compare(string str1, int iStartlndexl, string str2, int iStartIndex2, int iCount);
int Compare(string str1, int iStartlndexl, string str2, int iStartIndex2, int iCount, bool blgnoreCase);
Аргумент blgnoreCase влияет на возвращаемое значение, только если обе строки различаются лишь регистром. Чувствительные к регистру сравнения обычно полезнее при поиске, чем при сортировке. Вызовы:
string.Compare("e", "Е")
string.Compare("e", "E", false)
оба возвращают отрицательное значение, однако:
string.Compare(“e", "E", true) возвращает 0.
Вызовы:
string.Compare(“e", "e", blgnoreCase)
string.Compare(“e", "E", blgnoreCase)
всегда возвращают отрицательные значения независимо от аргумента blgnoreCase.