Мне сказали, что одна из многих причин, когда строки были неизменными в спецификации C#, заключалась в том, чтобы избежать проблемы с хэш-таблицами с ключами, измененными, когда ссылки на строковые ключи изменили их содержимое.C# Dictionary <> и изменяемые ключи
Тип словаря <> позволяет использовать ссылочные типы в качестве ключа. Как словарь избегает проблемы с измененными ключами, которые приводят к «неуместным» значениям? Есть ли клонированный по отношению к объекту объект, когда он используется в качестве ключа?
Python, хотя и пошел другим путем, и изменяемые данные не разрешены в качестве ключа кеша. http://www.udacity.com/view#Course/cs212/CourseRev/apr2012/Unit/207010/Nugget/251006 –