天天看点

C# 基础知识 (四).C#简介及托管代码

        暑假转瞬即逝,从10天的支教生活到1周的江浙沪旅游,在这个漫长的暑假中我经历了很多东西,也学到了很多东西,也认识到了很多不足之处!闲暇之余我准备重新进一步巩固c#相关知识,包括c#入门知识、c#并行开发、asp网站等.这篇文章我介绍的是书籍——c#入门经典(beginning c#) 作者karli watson.主要包括的是我自己缺乏的一些c#简介知识和托管代码的内容.内容比较简单,参照该书籍较多,相当于自己的在线笔记!

                                             《c#入门经典》书籍章节简介:

                                      第01-14章 c#语言:c#简介及与.net关系,语法和oop

                                      第15-17章 windows编程:使用.net framework各种控件

                                      第18-20章 web编程:使用asp.net执行任务、ajax

                                      第21-24章 数据访问:数据保存磁盘、xml、linq

                                      第25-27章 其他技术:wpf、wcf、wf

创建.net应用程序经历四个步骤如下:

1.使用某种.net兼容语言(如c#)编写应用程序代码

C# 基础知识 (四).C#简介及托管代码

2.把代码编译为cil,存储在程序集中

C# 基础知识 (四).C#简介及托管代码

3.在执行代码时(可执行文件自动运行或其他代码使用它时运行),首先必须使用jit编译器将代码编译为本机代码

C# 基础知识 (四).C#简介及托管代码

4.在托管的clr环境下运行本机代码以及其他应用程序或进程

C# 基础知识 (四).C#简介及托管代码

        首先对上面的术语进行简单的解释.

        cil 在编译使用.net framework库的代码时,不是立即创建专用于操作系统的本机代码,而是把代码编译为通用中间语言(common intermediate language,cil)代码.

        jit just-in-time编译器的任务是把cil编译为专用于os和目标机器结构的本机代码,os才能执行应用程序.

        clr common language runtime,公共语言运行库:负责管理用.net库开发的所有应用程序的执行.

        程序集 编译应用程序时,所创建的cil代码存储在一个程序集中.程序集包括可执行的应用程序文件(.exe)和其他应用程序使用的库(.dll).

        过去常常需要把代码编译为几个应用程序,每个应用程序都用于特定的os和cpu结构,现在jit编译器使用cil代码(cil代码独立于计算机、os和cpu)编译为本机代码.

        托管代码 将代码编译为cil,再用jit编译器将它编译为本机代码后,clr(公共语言运行库)的任务没有全部完成,还要管理正在执行的用.net framework编写的代码(执行代码的阶段叫运行时runtime).即clr管理着应用程序,其方式是管理内存、处理安全性及允许进行垮语言调试.相反,不受clr控制运行的应用程序属于非托管类型.

        换句话说:

        托管代码 (managed code)是由公共语言运行库clr环境(而不是直接由操作系统)执行的代码.

        非托管代码(unmanaged code)在公共语言运行库环境的外部,由操作系统直接执行的代码.

        非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务,而托管代码从clr环境中获得这些服务.

        举例:非托管类型如c++内存管理和分配,调用构造函数,使用完后释放内存.但是在c#中,只能编写在托管环境下运行的代码,使用clr的托管功能让.net自己与os进行交互.

        垃圾回收 托管代码最重要的一个功能就是垃圾回收(garbage collection),这种.net方法可确保应用程序不再使用某些内存时,完全释放这些内存.会定期检查计算机内存,从中删除不再需要的内容.

        c#使用的是.net framework没有限制应用程序的类型,常见的应用程序类型如下:

        1.windows应用程序

        这些应用程序(如微软office)具有熟悉的windows外观和操作方式,使用.net framework的windows forms模块(一个控件库,其中控件如按钮,可用于创建windows用户界面ui)可以生成这种应用程序.还可以使用wpf(windows presentation foundation)建立更灵活卓越的windows应用程序.

        2.web应用程序

        是一些web页面,可通过任何web浏览器查看.其.net framework包括一个动态生成web内容的强大系统,允许进行个性化和安全性等.这个系统叫active server pages.net(asp.net),使用c#通过web forms创建asp.net应用程序.还可以使用silverlight编写在浏览器内部运行的应用程序.(接下来wo需要学习研究的东西)

        3.web服务

        这是创建各种分布式应用程序的新方式,使用web服务可以通过internet虚拟交换数据.高级功能还可以创建wcf(windows communication foundation)服务.

        补充一些概念知识如下图:

C# 基础知识 (四).C#简介及托管代码

       总结:该文章主要是关于c#知识的基础简介知识和托管代码讲解,其中主要参照书籍《c#入门经典》,推荐大家学习c#的入门书籍.同时后面将讲述一些自己薄弱方面的基础知识,同时想结合自己想做的东西讲解些知识.如果有错误或不足之处还请海涵!高手飞过~