在C#中,反射始终以:
myInstance.GetType();
Run Code Online (Sandbox Code Playgroud)
要么:
typeof(MyType);
Run Code Online (Sandbox Code Playgroud)
为了获得Type,然后当查询有关类型的信息,例如获取属性,字段,属性等时,它们肯定会执行反射.
但是上面的调用反映了自己吗?
我认为在学术意义上答案是肯定的 - 因为你正在反思这种类型.所以我对这个问题的第二部分是:它是在运行时进行评估,是否第一次执行堆分配?(我知道GetType()对同一类型的后续调用返回相同的Type实例,因此.NET必须缓存结果 - 但它是否必须在第一次调用它时构造一个新类型?或者这个在编译时执行?