C#中匿名类型的性能

ryu*_*ice 9 .net c#

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

Fem*_*ref 18

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


Ste*_*dit 11

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

编辑

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


Jar*_*Par 11

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

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


Fra*_*nov 6

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

  • @Steven Sudit:CLI中没有匿名类型.实际上,C#中的匿名类型只是一个小说:它们实际上就像任何其他类型一样被命名为类型,因为这是CLI支持的唯一类型.唯一的区别是他们的名字是由随机数生成器而不是人生成的.所以,是的,匿名类型的性能与命名类型相同,因为匿名类型*是*命名类型. (5认同)
  • 可比或相同? (3认同)

use*_*594 6

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