为什么匿名类型在c#中是不可变的?

时间:2013-01-15 11:23:23

标签: c# .net immutability anonymous-types

  

可能重复:
  Why are the properties of anonymous types in C# read-only?

我写了这样的东西,

 var suspense = new { Name = "Android", Market = string.Empty };
 suspense.Market = "Potential";

.NET抛出错误

  

无法将属性或索引器'AnonymousType#1.Market'分配给 -   它是只读的

我知道C#中的AnonymousTypes是不可变的,但为什么呢?这是由于CLR的某些限制吗?

1 个答案:

答案 0 :(得分:1)

驱动不可变匿名类型的激励因素是,因为LINQ API在内部使用哈希表,并且返回可以修改的匿名类型的投影是一种危险的情况。

您可以查看:

Immutable types: understand their benefits and use them

Anonymous Types and Object Identities By Tim Ng on MSDN