3

C# 中的普通类型和匿名类型在运行时的编译过程和内存管理方面有什么区别?匿名类型在某些方面比普通类型更无效吗?

4

2 回答 2

11

来自MSDN:-

匿名类型提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需首先显式定义类型。类型名称由编译器生成,在源代码级别不可用。属性的类型由编译器推断。

评论:

匿名类型是直接从对象派生的引用类型。尽管您的应用程序无法访问它,但编译器会为它们命名。从公共语言运行时的角度来看,匿名类型与任何其他引用类型没有什么不同,只是它不能强制转换为除对象之外的任何类型。

于 2013-10-01T23:18:33.973 回答
3

关于运行时内存管理,C# 中的普通类型和匿名类型有什么区别?匿名类型在某些方面比普通类型效率低吗?

匿名类型与具有构造函数、只读字段和 and 的实现的泛型内部类GetHashCode差不多ToString。就运行时而言,它们没有什么特别之处。运行时不知道它们是“匿名的”;运行时将它们视为另一个类。生成的代码没什么意思。

关于编译过程,C# 中的普通类型和匿名类型有什么区别?

我不知道这个问题是什么意思。

于 2013-10-02T00:21:58.003 回答