Сравнение строк в C#
Сравнение строк При упорядочивании сравнение, чувствительное к культуре, почти всегда предпочтительнее: для алфавитного упорядочения строк необходим алфавит. Ординальное сравнение полагается на числовые коды Unicode, которые выстраивают английские символы в алфавитном порядке — но не в точности так, как можно было бы ожидать. Например, предполагая чувствительность к регистру, рассмотрим строки "Atom", "atom" и "Zoom". В случае инвариантной культуры они располагаются в следующем порядке: "Atom", "atom", "Zoom" При ординальном сравнении результат выглядит так: "Atom", "Zoom", "atom” Инвариантная культура инкапсулирует алфавит, в котором символы в верхнем регистре находятся рядом со своими двойниками в нижнем регистре (AaBbCcDd...). При ординальном сравнении сначала идут все символы в верхнем регистре, а затем — все символы в нижнем регистре (A...Z, a...z) (производится "возврат" к набору символов ASCII, появившемуся в 1960-х годах. Сравнение эквивалентности строк Операция == в типе string выполняет ординальное сравнение, чувствительное к регистру. Метода string.Equals в случае вызова без параметров работает аналогично. public bool Equals(string value, Stringcomparison comparisonType); public static bool Equals (string a, string b, StringComparison comparisonType); public enum StringComparison { CurrentCulture, // Чувствительное к регистру CurrentCulturelgnoreCase, InvariantCulture, // Чувствительное к регистру InvariantCulturelgnoreCase, Ordinal, // Чувствительное к регистру OrdinallgnoreCase }