第三章C语言基础_第1页
第三章C语言基础_第2页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第二章C#语言基础C#语言结合和已有计算机编程语言和软件的优点:VisualC+,VisualBasic,Delphi,C+Builder,JBuilder,Java等。3.1 NGWSRuntime技术基础XMLW«bWebServicesFormsV/indwxtFormsDataandXMLCtassesBaseFiameworkClassesCommonLanguageRuniimc3.1.1 NGWSRuntime技术简介用C#语言编写的源程序,必须用C#语言编译器将C#语言源程序编译为中间语言代码(受管制代码,受NGWSRuntimet制),不需要链接,形成扩展名为exe

2、或dll文件。中间语言代码不是CPU可执行的机器码,中间语言代码必须由NGWSRuntime将中间语言代码翻译为CPU可执行的机器码,由CPI执行。因此NGWSRuntime为C#语言中间语言代码运行提供了一种运行时环境。它和Basic语言执行方法类似,但也不完全相同,Basic语言是解释执行Basic语言源程序,其方法是逐句将Basic语言源程序翻译为CPU可执行的机器码。而C#语言是用NGWSRuntime中的既时编译器将中间语言代码翻译为CPU可执行的机器码,执行速度比Basic快。在这点上C#语言和JAVA语言基本相同。这种执行方法使运行速度变慢,但带来其它一些好处,主要有:交叉语言集

3、成:.NET系统包括如下语言:C#C+VBJ#。所有这些语言的源程序,都编译为相同的中间语言代码,由NGWSRuntimcfe责执行。自动内存管理:NGWSRuntim内建垃圾收集器,当对象或变量的生命周期结束时,垃圾收集器负责收回不被使用的对象或变量占用的存储空间。不必象C+语言,用new语句建立的对象,必须用delete语句释放对象占用的存储空间。也就是说,NGWSRuntim具有自动内存管理功能。交叉语言异常处理:由于所有语言的源程序,都编译为相同的中间语言代码,由NGWSRuntim负责执行,因此异常处理方法是一致的。这在调试一种语言调用另一种语言的子程序时,显得特别方便。增加安全:C

4、#语言不支持指针,一切对内存的访问都必须通过对象的事例变量来实现,只允许访问内存中允许访问的部分,这就防止病毒程序使用非法指针访问私有成员。也避免指针的误操作产生的错误。NGWSRuntim执行中间语言代码前,要对中间语言代码的安全性,完整性进行验证,防止病毒对中间语言代码的修改。版本支持:C#是以组件为基础的编程语言,组件可能要升级,由此可能带来一系列问题,有可能使用旧组件可以运行,使用新组件就运行不了,而新组件可能是安装其它程序时自动替换的。NGWSRuntim解决了这个问题。组件交互简化模式:采用NGWSRuntim运行环境,使用不同语言设计的组件,可以互相通用,可以从其它语言定义的类派

5、生出本语言的新类。给使用者带来极大方便。1中间语言和元数据用C#语言编写的源程序,必须用C#语言编译器将C#语言源程序编译为中间语言代码(受管制代码,受NGWSRuntimer制)。中间语言代码不是CPU可执行的机器码,必须用NGWSRuntim中的既时编译器将中间语言代码翻译为CPU可执行的机器码,由CPU执行。用C#语言编译器将C#语言源程序编译后,不但包括中间语言代码,还包括元数据。元数据是类型库、注册表及其它一些中间语言代码运行所需信息。中间语言和元数据共同包含在C#可执行文件或.dll文件中。2既时编译器既时编译器负责将中间语言代码翻译为CPU可执行的机器码,由CPU区执行。3.1.

6、2 虚拟对象系统(VOS)虚拟对象系统(VOSVisualObjectSystem)是NGWSRuntime勾架的基础,主要由4部分组成:类型系统.NET系统包括如下语言:C#C+VBJ#。.NET跨语言集成的特性来自于虚拟对象系统VOS的支持。在不同语言间进行代码复用和应用集成中所遇到的最大问题是不同语言类型系统间的相容性问题。可以想象不同的语言虽然语法结勾大体相同,但数据类型与语言环境本身的各种特点联系紧密,很难想象一种解释性的语言所拥有的数据类型会与一种编译语言相同,而即使相同的数据类型在不同的语言环境中表示的意义也存在差别,例如同样是整数类型,在MSSQL中的长度是32位,而在VB中却

7、是16位,至于日期时间与字符串类型在这方面的区别就更加明显了。VOS的建立就是为了改变这种状况,它既支持过程性语言也支持面向对象的语言,同时提供了一个类型丰富的系统来容纳它所支持的各种语言的特性,它在最大程度上屏蔽了不同语言类型系统间的转换,使程序员能够随心所欲地选择自己喜欢的语言(当然,这种语言必须支持.NET应用)从事开发,保证了不同语言间的集成。对于过程性语言,它描述了值的类型并指定了类型的所有值必须遵守的规VOS则。在面向对象的语言方面它统一了不同编程语言的对象模型。每一个对象在中都被唯一标识以与其它对象相区别。元数据元数据是类型库、注册表及其它一些中间语言代码运行所需信息。中间语言和

8、元数据共同包含在C#可执行文件或.dll文件中。元数据与使用的语言无关,换句话讲,不同语言产生的元数据相同。 通用语言规范(CLS)通用语言规范(CommonLanguageSpecificationCLS)是VOS系统中定义的语言特性,所有VOS中的语言都必须遵从通用语言规范,以使不同语言所编译的对象能够相互理解。一种语言,如遵守通用语言规范,它建立的类库可以被其它语言使用。 虚拟执行系统(VESVisualExecutionSystem)虚拟执行系统主要完成以下功能:(1) 装入中间代码。(2) 使用JIT将中间代码转换为本地机器码。(3) 装入元数据。(4) 代码管理服务包括垃圾收集器和

9、异常处理。(5) 定制与调试服务。(6) 线程和环境管理.Net框架的优点:可以使用任何编程语言,减少编写代码量,以XML/SOA为核心,提高了应用程序的可靠性,性能更加优化。.Net通过将各种语言先编译成中间语言(IL),然后再执行即时(JustInTime,JIT)编译器将其编译成本地代码来实现异构平台下对象的互操作。.Net通过CLR来实现资源对象和类型的安全。.Net通过HTTPXMLSOAPWSD等Internet标准的支持提供在异构网络环境下获取远程服务、连接远程设备和交互远程应用的编程界面。.Net的受管代码是指符合CLR进行规范,在内存中受运行时代码代理进行内存管理、线程管理、

10、远程管理、代码强制安全类型的代码。非受管代码指对内存、文件、数据库等非受管资源进行操作的代码,通常不受运行时代码代理管理,是不安全的。C#的弱点:CLS包括MSIL的共享语言基础,只让RAD开发者受益,而损害了硬件的核心开发者。usingSystem;classWelcome/*解释开始解释结束*/staticvoidMain()/解释Console.WriteLine("Pleaseenteryourname:");Console.ReadLine();Console.WriteLine("Welcometoyou!");您可以在任意一种编辑软件中完成

11、上述代码的编写,然后把文件存盘,假设文件名叫做Welcome.cs,典型的C#源文件通常都是以.cs作为文件的扩展名。例如存到D:asp文件夹中。和C+语言相同,C#语言是大小写敏感的。高级语言总是依赖于许多在程序外部预定义的变量和函数。在C或C+中这些定义一般放到头文件中,用#inelude语句来导入这个头文件。而在C#语言中使用usingSystem表示导入名字空间,C#中的usingSystem语句的用途与C+中#include语句的用途基本类似,用于导入预定义的变量和函数,这样在自己的程序中就可以自由地使用这些变量和函数。如果没有导入名字空间的话我们该怎么办呢?程序还能保持正确吗?答案

12、是肯定的,那样的话我们就必须把代码改写成下面的样子:classWelcomestaticvoidMain()System.Console.WriteLine("Pleaseenteryourname:");System.Console.ReadLine();System.Console.WriteLine("Welcometoyou!");C#中抛弃了C和C+冲繁杂且极易出错的操作符像:和->等,C#中的复合名字一律通过来连接。System是.Net平台框架提供的最基本的名字空间之一,C#程序中每个变量或函数都必须属于一个类,不能象C或C+那样建立

13、全局变量。主函数Main()也必须在一个类中。程序所完成的输入输出功能是通过Console来完成的,Console是在名字空间中System中已经定义好的一个类。类Console有两个最基本的方法WriteLine和ReadLine。ReadLine表示接受输入设备输入,WriteLine则用于在输出设备上输出。如果您不具备这个条件,那么至少需要安装Microsoft.NetFrameworkSDK这样才能够运行C#语言程序。实际上.Net平台内置了C#勺编译器,下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译。3.2 C#的变量和类型C#语言把变量分为数值类型和引用类型。3.2.1数值类型C#语言中数值类型可以分为以下几种: 简单类型(Simpletypes) 结构类型(Structtypes)枚举类型(Enumerationtypes)1结构类型结构类型和类一样,可以声明构造函数、数据成员、方法、属性等,和类的最根本的区别是结构类型是数值类型,类是引用类型。结

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论