不是很理解微软团队的意图,但是设计只读类,有这么几个好处,供你参考:
(1)值的原子性,不存在更改了某个属性而没有更改关联的某个属性造成的非原子状态。比如对于DateTime,月和日就需要原子修改,否则可能出现2月31日这种非法的日期,对于地址,国家、城市、街道是关联的,否则会出现日本湖南省这种奇怪的地址。原子性对于多线程以及出现异常的时候特别重要。
(2)HashCode和排序的稳定性(所谓稳定性是指,对于表示相同大小的两个元素,排序前后相对位置不变),对于GroupBy OrderBy,如果设计可以更改属性的对象,那么保持排序稳定就需要额外的跟踪了。
(3)不鼓励匿名类型的滥用,微软希望匿名类型只用于Linq的Select等特定目的,而不要在更多场合使用。