¿Por qué las propiedades de los tipos anónimos en C # son de solo lectura?

En C #, las propiedades de los tipos anónimos son de solo lectura:

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

Por supuesto, puedo declarar una clase real si quiero campos o propiedades modificables, pero, independientemente, ¿cuál es el razonamiento detrás de esta decisión de diseño para hacer que las propiedades sean de solo lectura?

Interesante artículo sobre eso aquí . Desde allí …

… [B] y asegurando que los miembros no cambien, nos aseguramos de que el hash sea constante durante toda la vida del objeto. Esto permite que los tipos anónimos se usen con colecciones como hashtables, sin perderlas realmente cuando se modifican los miembros. . Hay muchos beneficios de inmutabilidad en eso, simplifica drásticamente el código que usa el objeto, ya que solo se les pueden asignar valores cuando se crean y luego se usan (piense en enhebrar)