c#学习笔记(3)_c#教程

2008-02-23 05:46:45来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

开始

2000年6月我大学毕业,从北京回到了石家庄,正式开始了我的职业生涯。如前所述,一开始我使用的语言是asp,我一直认为这不能称之为编程,因为asp不是一种编程语言,把他叫做动态网页实现技术可能更好。另外,asp很简单,并且,简单就是他全部的特点--这使得他很容易就能学会(在后来的工作中,我接触到许多应聘的学生,他们都告诉我自己精通asp语言)。虽然学习起来很简单,但是在使用起来却不得不多费点儿劲儿:我还能记得自己晚上一个人在办公室用VI一步一步调试某一个网页的情景,每当碰到挫折失败的时候,总是想起给桐桐打一个电话,听听她的声音。如您所知,我总是碰到困难。

现在您能看出来,我不是高手,只是个低手...

2000年6月我大学毕业,从北京回到了石家庄,同一时间(美国西部时间6月22日上午),微软公司在位于美国西雅图郊外的总部内邀请新闻记者、新闻分析家等约400人,举行了新闻发布会“Forum2000”,宣布正式推出.Net计划。这个计划中包括了新的网络计算平台(.Net Framework)、新的语言(C#)、新的研发工具(Visual Studio.Net)连同asp的下一个版本ASP.NET,后者最开始被称为ASP 。那时候我学习的主要兴趣就在ASP.NET上,并且通过这个窗口开始了解Microsoft.Net的各个方面。

ASP.NET仍然不能称之为一种编程语言,但是现在能够把他看作是个创建、管理、部署Web应用程式的平台。能够使用任何.Net语言在这个平台上研发互连网应用程式,这其中当然包括C#。他们之间的关系能够从下图中看出:

这就是著名的.Net 平台结构图,从这个图上能够看到,ASP.NET、Windows Forms和VS.Net都但是是.Net研发平台的一部分,用于.Net应用程式的研发及展示。.Net 平台的核心技术为:通用语言运行时(CLR:Common Language Runtime)、基类库(Base Class Library)、.Net语言及Visual Studio.Net。


从这个图上也能够看出,.Net Framework是架构在Windows平台上的一个虚拟的运行平台,您能够想象将最下层的Windows换作其他的操作系统,比如说Linux,相同能够实现使用符合了CLS(Common Language Specification,通用语言规范)的.Net语言(VB.Net、C#、JScript.Net等)来创建ASP.NET或Windows Forms(可能会叫做Linux Forms)应用程式的功能,这其实就是我们前面介绍的Mono计划所要实现的功能。所以能够这么认为,理论上,C#是一种能够跨平台的语言,这很像Java,另一个比较像Java的地方是,C#也是一种(特别意义上的)解释性的语言。同Java相同,C#编写的程式代码也是先通过C#编译器编译为一种特别的字节代码(中间语言,Microsoft Intermediate Language,MSIL),运行的时候再经由特定的编译器(JIT编译器,Just In Time,JITer)编译为机器代码以供操作系统执行。


不但是C#语言,任何.Net语言(将会包括我们常用的几十种现代的编程语言)都能够编写面向CLR的程式代码,这种代码在.Net中被称为托管代码(Managed Code),任何的Managed Code都直接运行在CLR上,具备和平台无关的特性。


解释性的语言很安全,并且能够通过他的运行平台为其赋予更多的功能,比如自动内存管理、异常处理等。事实上,C#语言的许多特点都是由CLR提供的,下面的CLR结构图说明了这一点。

能够看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多线程支持(Thread Support)这些C#的特点都是由CLR来提供的。CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境,主要的功能是管理代码的运行。在.Net 平台结构图中,CLR的上面是.Net的基类库(Base Class Library,BCL),这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展的编程接口。从.Net 平台结构图中也能够看到,基类库能够被各种语言调用和扩展,也就是说,不管是C#、VB.NET还是VC .NET,都能够自由地调用.Net的基类库。事实上, C#并没有属于自己的类库,他所使用的编程接口就是.Net提供的基类库。所以,在决定使用C#时,真正需要费工夫学习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程式员来说都是他们很熟悉的。BCL则相反,他包含了超过4500个以上的类和无数的方法、属性,在您的C# 程式中随时都可能会用到他来完成自己的任务。

很多人都思考过应如何开始学习一种新的语言,对于一个有经验的编程人员来讲,这确非难事。但是对于一个对编写代码一无所知的人而言,假如您是以C#开始您的编程之旅的,数目繁多的概念及新名词可能会令您有些不知所措。这时候请注意您的学习顺序,任何一种编程语言的学习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,但是在实际的学习中,他们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识后,在应用中学习各种基类库的用法。鉴于C#这一语言的特别性,全面了解他的运行平台(.Net Framework)必会使您的学习事半功倍。所以请记住上面提到的两个图,在以后的学习中,虽然可能不会明确的涉及到他们,但是在整个C#的学习过程中,他们却是无处不在的。

更有一个很重要的概念需要您明白,这就是公共语言架构(Common Language Infrastructure ,CLI)。CLI是CLR的一个子集,也就是.NET中最终对编译成MSIL代码的应用程式的运行环境进行管理的那一部分。在CLR结构图中CLI位于下半部分,主要包括类加载器(Class Loader)、实时编译器(IL To Native Compilers)和一个运行时环境的垃圾收集器(Garbage Collector)。CLI是.Net和CLR的灵魂,CLI为IL代码提供运行的环境,您能够将使用任何语言编写的代码通过其特定的编译器转换为MSIL代码之后运行其上,甚至还能够自己写MSIL代码在CLI上面运行。如您所知,欧洲电脑制造商协会(ECMA)已于2001年10月13日批准C#语言规范(ECMA-334)成为一种新诞生的电脑产业标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段。并且,作为.Net和CLR的核心部分,CLI和C#也同时获得了ECMA的批准(ECMA-335)。拥有了C#和CLI这两项标准,您能够自己写出能够运行于任何操作系统上的.Net平台(只要您愿意)。如前所述,著名的Mono项目就是这么干的,Mono项目包括三个核心的部分:一个C#语言的编译器,一个CLI和一个类库。在Java的世界中,这项工作是由SUN公司完成的,SUN针对不同的操作系统研发出相应的Java虚拟机以便让一个由Java研发的应用程式运行在不同的操作系统上,但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系统的.Net平台)。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 在c#中使用com 实现事务控制_c#应用

下一篇: c#学习笔记(2)_c#教程