乍探C#

                                               
                  初探.NET底层原理

     
学习C#距离不开.net平台,因为微软的开发平台真正是绝强了,它为各国一个开发者都开了最为多尽多,但是咱不光使掌握怎么用,而且为应当理解里面的中间到底包含了哟。本篇文章不仅道一些C#语言的知,也包括.net平台遭遇之片运作的机理。

     
相比Java由于微软对C#言语的包裹,让洋洋丁当其上之较长时间内未可知深刻理解。举个简单的事例:我们知道C#言语关于字段的包裹:在C#言语的实现中凡get和set属性,而于Java中的确是get和set方法给人口洞悉,其实C#啊是用get,set方法实现之,只不过封装起来,大家看不到而已。

     
下面我们以开始说起C#言语中之根原理:

      首先我们而明白其他语言的运行,归根到底是机器语言的运作,也尽管是大方的01数字。而C#语言为多亏依靠.net平台,将这种高档语言编译成01代码。那么C#言语在.net平台受到的编译过程到底是怎么的吧?

 

Java 1

其实.NET平台相当于Java中的虚拟机,通过C#编译器得到中语言(一栽非常的许节码),运行时更经由CLR中之JIT(just in Time)编辑器编译为机代码,便于OS执行。

那么下面我们来拘禁一下.NET受到带有哪些内容?

Java 2

 

欠图Java为.NET平台机构图,可以窥见VS.NET框架的核心技术为官语言运行时(CLR)而且还带有BCL(基础类库)以及.NET中的各种语言,为何会生出这样多种语言可以在.net平台受到运行吧?其实,以上之各种语言都足以编写面向CLR的程序代码,这种代码在.net中受称呼托管代码,所有的托管代码都可于CLR上运行,具有平台无关性。为何.net不能够落实跨平台为?例如当Linux中缘何不可以实现asp.net或者winform呢,其实就算是因没有面向Linux开发的CLR(不过mono貌似已经落实了,由于我没使用过,所以就算非予置讲了),就是如此的原故,.net未能贯彻跨平台。

     
下面我们来拘禁CLR中之隐含如何内容?  

Java 3

 Base
Class LIbrary Support:基础类库支持

 Thread
Support:CLR支持多线程(任何语言都得使这提供的服务来拓展编制多线程应用程序)。

COM
Marshaler:向下兼容(详细内容请圈:https://msdn.microsoft.com/zh-cn/library/bb822049(v=vs.110).aspx.aspx))

Type
Cheker:类型安全实施(任何不抱项目安全的强制转换后,都见面进展反省,除此之外还自行检查不初始化的变量和超索引的数组)

Exception
Manager:异常处理机制

IL to Native Compliers:是赖用CLR对MSIL进行编译成机器代码。

GC:垃圾回收器并无可知管理内存中所有的资源,开发人员仍然要自己写代码实现回收,如运用close方法与dispose方法。

延续内容以日益全面,请持续关注!

相关文章