Комментарии 9
Я прошёл этот путь, Гэндальф, он был тернист и запутан. Было бы намного проще, если бы в начале статьи был небольшой его план.
Но сама находка любопытная, насколько, оказывается, легко выстрелить себе в ногу в, казалось, управляемом языке, который разработан специально, чтобы не стрелять себе в ногу
Так управляемость - это про работу с памятью (чтобы та не текла, чтобы автоматически собирался мусор), а не про некорректное использование API.
Вопрос скорее в том, почему Microslop не заостряют внимание на том, что если хочешь пихать свои типы в словарь в качестве ключей, важно переопределять GetHashCode и Equals. Единственное, что я нашёл, это вот эту скромную заметку:
The speed of retrieval depends on the quality of the hashing algorithm of the type specified for
TKey.
Всё отлично задокументировано https://learn.microsoft.com/en-us/dotnet/api/system.valuetype.gethashcode?view=net-10.0#remarks прямым текстом. Объективно, классы и рекорды (в том числе структурные) не подвержены этому. А если вы зачем-то начали писать свою структуру, то нужно понимать нюансы.
То есть вы намеренно допустили ошибку не переопределив equals и gethashcode и сделали замеры тестами посмотреть насколько она серьезная?
Что общего у хабра и пикабу? :)
Но это же буквально база. Я раньше студентам по приколу рассказывал о устройстве словарей и такое спрашивали на собесах на мидла…

А чё, так можно было? Dictionary == List