匿名类型属性设置器

Mar*_*rko 15 c# anonymous-types .net-3.5

为什么匿名类型没有属性设置者?

var a = new { Text = "Hello" };
a.Text = "World"; //error
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 33

匿名类型是设计不可变的.

匿名类型用于保存值,表示值的类型不应该是可变的.

此外,它会使它们在字典中不可靠,因为哈希码可能在创建后发生变化.
许多LINQ方法使用字典,特别是对于延迟评估,具有可变类型的LINQ可能会导致细微的神秘错误.

  • 请注意,VB中的匿名类型允许部分变异.在VB中,您可以说明匿名类型的哪些部分是可变的; 生成的代码不会使用可变位作为哈希代码/相等的一部分,因此您不会得到"丢失在字典中"的问题.我们决定不在C#中实现这些扩展. (7认同)