Я читаю CLR VIA C#
Джеффри Рихтера.И, объясняя сравнение строк, он отмечает, что:
Когда метод Compare не выполняет порядковое сравнение, он выполняет расширения символов .Расширение символа - это когда символ расширяется до нескольких символов независимо от культуры.
String s1 = "Strasse";
String s2 = "Straße";
Boolean eq;
CultureInfo ci = new CultureInfo("de-DE");
eq = String.Compare(s1, s2, true, ci) == 0; // returns true
В приведенном выше случае он отмечает:
... немецкий символ Eszet 'ß' всегда расширяется до 'ss.Таким образом, в примере кода вызов Compare всегда будет возвращать 0 независимо от того, какую культуру я на самом деле передаю.
Я хочу знать, из какого источника среда выполнения берет, что ß
равен ss
или как он это вычисляет?