在C#中使用匿名类型是否不好?
不是。它们是在编译时生成的代码类,并且与普通类一样有效。
它们在性能方面与其他类型相同。
编辑
更清楚地说,我应该说它们的表现完全像其他类型,因为它们与其他类型完全相同,只是编译器生成名称不同。唯一会影响性能的方式是如果将匿名类型实例传递到另一个作用域,在那里需要使用反射或dynamic
才能访问属性。这会很昂贵,因为它涉及到晚期绑定以在运行时解析所有内容。
匿名类型本身是否不好? 不是。如果是的话,C#团队肯定不会浪费时间将其添加到语言中。在底层,它们只是编译成标准的CLR类型。
像几乎所有其他语言功能一样,匿名类型是否可以被滥用到非常低效的程度?当然可以。
这不错,有时很方便。例如,在使用 Linq 时,与其创建只使用一次的类,不如使用匿名类型更为可取。