C#,查找系统的默认方法的正文



我刚开始用c#编程,我想知道为什么在系统定义的类中没有主体。例如,当你观察类系统的内部时。对象的方法,如ToString()没有主体,见下图。类系统。对象

在这里,类对象和ToString方法都不是抽象的。

系统源代码不可用,已被编译为字节码。因此,由于源代码不可用,在Visual Studio中浏览它时只显示定义。如果您想查看. net库的源代码,可以查看参考源代码。

您只查看Object类的元数据。在这里,您只能检查该类的可用字段和方法。

如果你在。net源浏览器中检查System.Object.ToString()方法,你可以看到ToString()方法有自己的定义-默认情况下它是类的名称,如注释所示。

正如weexos所提到的,系统库包含字节码(或IL -中间语言代码)。

您可以使用反射来获得与给定方法相关联的编译后的IL指令:

var objectClass = typeof(object);
var actualInstructions = objectClass.GetMethod("GetHashCode")
.GetMethodBody()
.GetILAsByteArray();

现在你需要做的就是解析IL指令:)