小编典典

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

c#

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

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

当然,如果我需要可写的字段或属性,则可以声明一个真实的类,但是无论如何,将属性设置为只读的此设计决定背后的原因是什么?


阅读 877

收藏
2020-05-19

共1个答案

小编典典

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


[B]通过确保成员不变,我们确保哈希在对象的生命周期中是恒定的。这允许匿名类型与哈希表(如哈希表)一起使用,而在修改成员时不会丢失它们。不变性有很多好处,它极大地简化了使用对象的代码,因为只有在创建对象之后才可以为其分配值,然后才使用它们(请考虑线程化)

2020-05-19