Re[2]: EqualityComparer<T>.Default
От: Kolesiki  
Дата: 22.06.21 23:00
Оценка:
Здравствуйте, 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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.