你的位置:首页 > 软件开发 > ASP.net > CLR调用静态方法、实例方法和虚方法的区别

CLR调用静态方法、实例方法和虚方法的区别

发布时间:2015-11-06 15:00:30
[<CLR via C#>学习笔记][代码皆来自CLR via C#,有改动]在解释CLR调用这三种方法的区别之前,先看看c#如何生成程序集的:这幅图只是为了说明IL中间语言代码和元数据的关系,即通过元数据可以找到类型对应的IL代码 接下来看看一个方法被调用时发生 ...

[<CLR via C#>学习笔记]

[代码皆来自CLR via C#,有改动]

在解释CLR调用这三种方法的区别之前,先看看c#如何生成程序集的:

CLR调用静态方法、实例方法和虚方法的区别

这幅图只是为了说明IL中间语言代码和元数据的关系,即通过元数据可以找到类型对应的IL代码

 

接下来看看一个方法被调用时发生的事情:

CLR调用静态方法、实例方法和虚方法的区别

接下来Main第二次调用Console.WriteLine(get='_blank'>string)方法时就不会经过JIT编译器,而是直接执行JIT第一次已经编译好的代码.

CLR之所以可以检测到代码中所有的引用类型,是因为元数据表的引用表记录了源代码中所有的引用类型和成员,而通过这个引用表也就可以获得该方法的IL了,然后JIT编译器也就可以编译这些IL.

 

现在可以开始对比CLR调用静态方法、实例方法和虚方法的区别了:

定义如下两个类:

class Employee{  public int GetYearsEmployed(){};  public virtual string GetProgressReport(){};  public static Employee Lookup(string name){};}class Manager : Employee{  public override string GetProgressReport(){};}

原标题:CLR调用静态方法、实例方法和虚方法的区别

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录