Здравствуйте, Qbit86, Вы писали:
Q>Интернирование тут ни при чём. При чём дефолтный компаратор. Если ты не передаёшь компаратор в явном виде, то подписываешься на то, что его выберут за тебя.
Ну хорошо, Стамбул — город контрастов!

Но ведь граблей-то это не отменяет! Вот ещё более жизненный пример:
var s1 = "stroka";
var s2 = Console.ReadLine();// здесь вводим stroka
var lst = new List<string>();
lst.Add(s1);
lst.Add("чупакабра");
lst.Add(s2);
lst.Remove(s2);
Console.WriteLine(Fmt.JSON(lst));
На выходе:
stroka
["чупакабра","stroka"]
Я согласен, с интернированием протупил, но компаратор-то всё равно с граблями! Нельзя просто за юзера решить "ты хочешь сравнить строки" (вместо адресов). Это не говоря о том, что даже само сравнение может быть ещё и case insensitive.