应该是不言自明的,但这是在实时 XNA 代码的上下文中,我想在其中避免分配以避免触发 GC。所以我想知道与已加载类型关联的托管 Type 对象是否始终存在于运行时,或者 typeof() 是否实际上在堆上构造了一个新的 Type 对象(大概来自运行时的一些非托管元数据),这将被垃圾收集。随意指出甚至问这个问题所揭示的任何无知的假设/误解 =)
最佳答案
来自 C# 4 规范第 7.6.11 节:
There is only one
System.Type
object for any given type. This means that for a typeT
,typeof(T) == typeof(T)
is always true.
(此外,如果您通过反射获取类型,它也将始终获取相同的 Type
对象,但这不在规范中。)
关于c# - C# 中的 typeof() 运算符是在堆上分配一个新的 Type 对象,还是返回一个现有的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7856061/