C#中匿名类型的性能

在C#中使用匿名类型是不是很糟糕?

匿名类型本身是不是很糟糕? 不,如果他们是C#团队,那么肯定不会浪费时间将它添加到语言中。 在引擎盖下,他们只需编译成标准的CLR类型。

匿名类型,例如几乎所有其他语言特征,都可以被滥用到不具备性能的程度。 当然。

不它不是。 它们是在编译时生成的代码类,并且与普通类一样执行。

就性能而言,它们就像其他类型一样。

编辑

为了更清楚,我应该说它们的表现与其他类型完全相同,因为它们与其他类型完全相同,除了编译器生成名称这一事实。 性能受到影响的唯一方法是将匿名类型的实例传递给另一个范围,其中只需使用reflection或dynamic来访问属性。 这将是昂贵的,因为它涉及后期绑定以在运行时解决所有问题。

C#中的匿名类型仍然是静态类型,并且编译器会解析访问其方法和属性的问题。 性能与显式类型相当。

这不错,有时候很方便。 例如,在使用Linq时,不是创建仅使用一次的类,而是使用匿名类型。