Почему свойства анонимных типов в С# доступны только для чтения?

В С# свойства анонимных типов доступны только для чтения:

var person = new { Surname = "Smith", OtherNames = "John" };
person.Surname = "Johnson";  // ERROR: .Surname is read-only

Конечно, я могу объявить реальный класс, если я хочу записывать поля или свойства, но независимо от того, что является причиной этого дизайнерского решения, чтобы сделать свойства доступными только для чтения?

Ответ 1

Интересная статья о том, что здесь. Оттуда...

... [B] y гарантируя, что члены не меняя, мы гарантируем, что хэш константа для времени жизни object.This позволяет анонимным типам использовать с такими коллекциями, как hashtables, не теряя при этом когда члены изменены. Существует много преимуществ неизменность в том, что он радикально упрощает код, который использует объекта, поскольку они могут быть назначены только значения при создании и затем просто используются (подумайте о потоке)