Max*_*ini 9 c# reflection xna garbage-collection typeof
应该是不言自明的,但这是在实时XNA代码的上下文中,我想避免分配,以避免触发GC.所以我想知道与已加载的类型相关联的托管类型对象是否始终存在于运行时中,或者如果typeof()实际构造了堆上的新Type对象(可能来自运行时中的某些非托管元数据),这将是垃圾收集.随意指出甚至提出这个问题所揭示的任何无知的假设/误解=)
Sal*_*iti 18
不,类型被缓存,它总是返回相同的静态只读实例.
您可以编写此示例测试程序来验证这一点:)
static void MyTest()
{
if (object.ReferenceEquals(typeof(int), typeof(int))
Console.WriteLine("Yippie! they are the same!");
else
Console.WriteLine("WTF?");
}
Run Code Online (Sandbox Code Playgroud)
这同样适用于GetType方法和其他所有反射函数,例如获取属性,方法,字段,属性和其他所有内容.
Jon*_*eet 18
从C#4规范部分7.6.11:
System.Type任何给定类型只有一个对象.这意味着对于一个类型T,typeof(T) == typeof(T)总是如此.
(另外,如果你通过反射获得类型,它总是会获取相同的Type对象,但这不在规范中.)
| 归档时间: |
|
| 查看次数: |
1430 次 |
| 最近记录: |