Мне сказали, что одна из многих причин, по которой строки были сделаны неизменяемыми в спецификации C#, заключалась в том, чтобы избежать проблемы с изменением ключей HashTables, когда ссылки на строковые ключи изменяли их содержимое.
Тип Dictionary позволяет использовать ссылочные типы в качестве ключа. Как словарь позволяет избежать проблем с измененными ключами, которые приводят к «неправильным» значениям? Существует ли почленный клон объекта, используемого в качестве ключа?
Подробнее здесь: https://stackoverflow.com/questions/300 ... table-keys