【问题标题】:Why are the properties of anonymous types in C# read-only?为什么 C# 中匿名类型的属性是只读的?
【发布时间】:2009-07-06 22:01:51
【问题描述】:

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

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

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

【问题讨论】:

  • 安全,也许吧?如果你没有指定它们是可写的,不要让它们被写?此外,这些是属性,而不是字段。
  • 好点,我会更改文本。我也想知道为什么它们不能是用“只读”声明的字段......

标签: c# c#-3.0


【解决方案1】:

关于 here 的有趣文章。从那里...

... [B]y 确保成员这样做 不变,我们确保哈希是 恒定的生命周期 object.This 允许匿名类型 与集合一起使用 哈希表,实际上没有丢失 当成员被修改时。 有很多好处 不变性,它极大地 简化了使用 对象,因为它们只能被分配 创建然后刚刚使用时的值 (想想线程)

【讨论】:

  • 是的,不变性有很多好处,但可变性也有很多好处——你可以使用上面的论点来论证列表也应该是不可变的。这个决定完全没有意义。
  • 我同意丹尼的观点。这个决定完全没有意义。
  • 这很有趣,因为 vb.net 中的匿名类型是可变的......
猜你喜欢
  • 1970-01-01
  • 2021-10-16
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2023-03-26
相关资源
最近更新 更多