刚学习那会,感觉.net运行原理是很复杂的,也去了解过相关的东西,但是很晦涩,难于理解。感觉有些难了,也就放弃了解了。今天回头想想,也是当时有些毛躁了,不管怎么说,时至今日是有些明白运行原理。
从头开始吧,我们就以最流行的c#来说,当然我也是学习的c#。
我们常说的.net 应该说是.Net Framework,而.net framework主要包含CLR(通用语言运行时)和FCL(框架类库).相信大家都听说过,我们写的c#代码都是托管代码,至少我刚学习那会是不明白为什么我写的就是托管代码呢?网络上的斗地主大家应该都玩过,那里面也有个托管,其实意思都是差不多的。也就是说我们写的代码后期不用我们管,这里主要是说一些资源的释放。如果有开发c/c++语言经验的人都知道,开辟内存,new 对象等都需要自己去释放,否则就会出现内存泄露(程序对内存消耗越来越大得不到释放)。而我们c#不并用考虑这一点,因为我们是托管代码,我们的代码被别人接管了。打个比方,就像一个家长将孩子送到托儿所,孩子以后的吃喝拉撒都归托儿所处理。而处理我们代码的是clr,有人叫做公共语言运行时,也有人叫做通用语言运行时。公共(通用)从字面上可以看出,这是一种多种语言的运行时,F#,vb等。而我们使用c#或f#等这类托管代码编译后的生成的程序集(程序集包括IL和元数据),clr只处理这类代码,类似于java的虚拟机。