Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么匿名类型的属性在C#中是只读的?_C#_C# 3.0 - Fatal编程技术网

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

为什么匿名类型的属性在C#中是只读的?,c#,c#-3.0,C#,C# 3.0,在C#中,匿名类型的属性是只读的: var person = new { Surname = "Smith", OtherNames = "John" }; person.Surname = "Johnson"; // ERROR: .Surname is read-only 当然,如果我想要可写的字段或属性,我可以声明一个真正的类,但不管怎样,将属性设置为只读的设计决策背后的原因是什么。从那里 。。。[B] y确保成员 不更改,我们确保哈希是 在系统的生命周期内保持不变 对象。这允许匿名类

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

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

当然,如果我想要可写的字段或属性,我可以声明一个真正的类,但不管怎样,将属性设置为只读的设计决策背后的原因是什么。从那里

。。。[B] y确保成员 不更改,我们确保哈希是 在系统的生命周期内保持不变 对象。这允许匿名类型 与收藏一起使用,如 hashtables,而不会实际丢失 当成员被修改时,它们将被删除。 这有很多好处 在这方面,它是不可改变的 简化使用 对象,因为它们只能被指定 创建并仅使用时的值 (想想线程)


安全,也许?如果您没有指定它们是可写的,就不要让它们被写入?此外,这些是属性,不是字段。好的,我会更改文本。我还想知道为什么不能用“readonly”声明字段……是的,不可变性有很多好处,但可变性也有很多好处——你可以用上面的论点来论证列表也应该是不可变的。这个决定毫无意义,我同意丹尼的看法。这个决定毫无意义。这很有趣,因为vb.net中的匿名类型是可变的。。。