C#中匿名类型的性能

时间:2010-06-23 23:26:12

标签: c# .net

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

5 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:11)

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

修改

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

答案 2 :(得分:11)

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

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

答案 3 :(得分:6)

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

答案 4 :(得分:6)

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