C#4.0捷径教程笔记(2)

c# 发表评论

 

C#和CLR

CLR中的JIT编译器

将C#编译成中间语言,由CLR执行,而CLR并非像JavaScript那样的解释执行的,首次运行程序的时候CLR调用JIT编译器将中间语言代码编译为机器码,这样的好处是,相比于基于通用优化法则的编译器,实时编译能够实现更加细粒度的优化,提供基于当前宿主的机器的优化,并且托管代码相比于机器码往往占用空间更少,代码更加优化。虽然JIT编译阶段增加了复杂度,使得初次运行的时候效率下降,但是JIT编译器的实时编译只是在运行初期进行编译,之后程序会运行之前编译的版本。

程序集和程序加载器

程序集是CLR中可重用代码的离散单元,类似于DLL。程序集可通过清单将多个模块连接起来,并且各个模块具有自描述性。为了实现跨语言的操作,CLI定义了CTS的子集,CLS(Common Language Specification)通用语言规范,如果程序中用到了CLS兼容类型,CLI可以确保任何托管语言都能使用该程序集。

 

全局程序集缓冲

 GAC(Global Assembly Cache),在GAC注册过的程序集可以提供给系统中所有的应用程序使用。这个是本机上的地址C:\Windows\assembly

 

元数据

元数据是一个描述程序集内容的可扩展格式。http://www.ruanyifeng.com/blog/2007/03/metadata.html这里写的比较好,不管你懂不懂,反正我是懂了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *