在C#中,匿名类型的属性是只读的:
var person = new { Surname = "Smith", OtherNames = "John" }; person.Surname = "Johnson"; // ERROR: .Surname is read-only
当然,如果我需要可写的字段或属性,则可以声明一个真实的类,但是无论如何,将属性设置为只读的此设计决定背后的原因是什么?
有趣的文章在这里。从那里 …
… [B]通过确保成员不变,我们确保哈希在对象的生命周期中是恒定的。这允许匿名类型与哈希表(如哈希表)一起使用,而在修改成员时不会丢失它们。不变性有很多好处,它极大地简化了使用对象的代码,因为只有在创建对象之后才可以为其分配值,然后才使用它们(请考虑线程化)