'typeof'是如何工作的?

Mat*_*ell 14 c# types

我很好奇C#中typeof的"方法体"是什么样的(非常肯定我不能在反射器中找到它,因为它是关键字而不是方法).

我猜它相当于GetType(魔术转换符号到字符串).

在Reflector中查看GetType(字符串),它调用一个方法"PrivateGetType",它调用"RuntimeTypeHandle.GetTypeByName",而RuntimeTypeHandle似乎有很多类型的逻辑,但GetTypeByName的东西没有显示在Reflector中.

Dea*_*ing 13

如果您执行以下操作:

Type t = typeof(string);
Run Code Online (Sandbox Code Playgroud)

然后编译器将该typeof(string)位编译为ldtoken MSIL指令,然后调用Type.GetTypeFromHandle以获取Type该类的实例.

Type.GetTypeFromHandle由运行时实现(这就是为什么它标有"MethodImplOptions.InternalCall"属性).您可以查看单声道的源代码以了解它的实际实现方式,但您基本上必须了解整个元数据系统以了解Type内部的朋友如何工作...