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