According To MSDN: StringComparison.InvariantCulture
:Уточнение StringComparison.InvariantCulture?
Определяет культуру, случай, и рода правила, которые будут использоваться определенными перегрузками string.Compare и методов String.equals.
Ну, я не делаю любого рода здесь, в моем образце, и до сих пор не понимаю, почему это дает результат его выход:
/*1*/ void Main()
/*2*/ {
/*3*/ string s1 = "lasst";
/*4*/ string s2 = "laßt";
/*5*/ Console.WriteLine (s1.Equals(s2, StringComparison.InvariantCulture));
/*6*/ //True
/*7*/
/*8*/
/*9*/
/*10*/ string s3 = "hello";
/*11*/ string s4 = "héllo";
/*12*/ Console.WriteLine (s3.Equals(s4, StringComparison.InvariantCulture));
/*13*/ //False
/*14*/ }
InvariantCulture
использует правила сравнения, основанные на английский, но без каких-либо региональных вариаций
1) Так почему же говорит, что lasst
равно laßt
? (у одного даже нет английского символа ...)
2) И почему (если он сплющен по-английски) hello
не равен héllo
?
Это не «сплющенный английский» - это просто, что правила * основаны на английском. Я думаю, что для более подробной информации вы, вероятно, должны посмотреть на unicode.org, который, вероятно, войдет в это в * lot * детали. –
@JonSkeet Jon, Но 'ß' не является английским персонажем, так как он может быть основан на английском? –
"Основано на"! = "Точно так же, как". –