为什么C#中匿名types的属性是只读的?

在C#中,匿名types的属性是只读的:

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

当然,如果我想要可写的字段或属性,我可以声明一个真正的类,但是无论如何,这个devise决策背后的原因是什么使属性为只读?

在这里有趣的文章。 从那里 …

为确保成员不会改变,我们确保哈希在对象的生命周期中是恒定的。这允许匿名types与哈希表之类的集合一起使用,而不会在成员被修改时丢失它们。 这样做有很多好处,它极大地简化了使用该对象的代码,因为它们只能在创build时被赋值,然后才被使用(思考线程)