我很好奇C#中typeof的“方法体”是什么样的(非常确定我无法在反射器中找到它,因为它是关键字而不是方法)。
我猜它等同于GetType(魔术转换符号到字符串)。
在Reflector中查看GetType(字符串),它调用方法“PrivateGetType”,调用“RuntimeTypeHandle.GetTypeByName”,RuntimeTypeHandle似乎有很多类型的逻辑,但GetTypeByName的东西不显示在Reflector中。
答案 0 :(得分:13)
如果您执行以下操作:
Type t = typeof(string);
然后编译器将typeof(string)
位编译为ldtoken MSIL指令,然后调用Type.GetTypeFromHandle以获取Type
类的实例。
Type.GetTypeFromHandle
由运行时实现(这就是为什么它标有“MethodImplOptions.InternalCall”属性)。您可以查看单声道的源代码以了解其实际实现方式,但您基本上必须了解整个元数据系统,以了解Type
和朋友如何在内部工作......