初探C#

                                                                  初探.NET底层原理html

      学习C#离不开.net平台,由于微软的开发平台真的是太强大了,它为每个开发者都作了太多太多,可是咱们不只要知道怎么用,并且也应该知道其中的内部到底包含了什么。本篇文章不只讲一些C#语言的知识,也包括.net平台中的一些运行的机理。数组

      相比Java因为微软对C#语言的封装,让许多人在其学习的较长时间内不能深入理解。举个简单的例子:咱们知道C#语言关于字段的封装:在C#语言的实现中是get和set属性,而在Java中确是get和set方法让人一目了然,其实C#也是利用get,set方法实现的,只不过封装起来,你们看不到而已。安全

      下面咱们将从头讲起C#语言中的底层原理:多线程

      首先咱们要知道任何语言的运行,归根究竟是机器语言的运行,也就是大量的01数字。而C#语言也正是依靠.net平台,将这种高级语言编译成01代码。那么C#语言在.net平台中的编译过程究竟是怎样的呢?框架

 


其实.NET平台至关于Java中的虚拟机,经过C#编译器获得中间语言(一种特殊的字节码),运行时再经由CLR中的JIT(just in Time)编辑器编译为机器代码,便于OS执行。asp.net

那么下面咱们来看一下.NET中包含哪些内容?编辑器

 

该图为.NET平台机构图,能够发现VS.NET框架的核心技术为公共语言运行时(CLR)并且还包含BCL(基础类库)以及.NET中的各类语言,为什么会有这么多种语言能够在.net平台中运行呢?其实,以上的各类语言均可以编写面向CLR的程序代码,这种代码在.net中被称为托管代码,全部的托管代码均可以在CLR上运行,具备平台无关性。为什么.net不能实现跨平台呢?例如在Linux中为什么不能够实现asp.net或者winform呢,其实就是由于没有面向Linux开发的CLR(不过mono貌似已经实现了,因为本人并未使用过,因此就不予置讲了),就是这样的缘由,.net未能实现跨平台。学习

      下面咱们来看CLR中的包含哪些内容?  spa

 Base Class LIbrary Support:基础类库支持.net

 Thread Support:CLR支持多线程(任何语言均可以利用此提供的服务来进行编写多线程应用程序)。

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

Type Cheker:类型安全执行(任何不符合类型安全的强制转换后,都会进行检查,除此以外还自动检查未初始化的变量与超过索引的数组)

Exception Manager:异常处理机制

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

GC:垃圾回收器并不能管理内存中全部的资源,开发人员仍然须要本身写代码实现回收,如使用close方法和dispose方法。

后续内容将逐步完善,请持续关注!

相关文章
相关标签/搜索