第1章与概述精选文档.ppt
第1章与概述本讲稿第一页,共三十三页教学目标本章将为读者介绍.NET战略的提出及其意义、C#(发音为“C Sharp”)语言的特点以及.NET Framework的工作原理。通过本章的学习,使读者对.NET Framework和C#有一个概括性的认识,这对于理解如何利用C#进行编程是非常重要的。本讲稿第二页,共三十三页教学重点.NET战略和.NET的意义.NET Framework的工作原理C#和.NET Framework的含义C#与其它语言比较命名空间C#2.0的新增功能本讲稿第三页,共三十三页学习方法及目标结合实际项目学习编程 1 边实践边学习是一种最有效的方法 2 不要指望记住全部语法,手头有几本好的工具书参考书选取原则 1 书中代码不要太长 2 开始不要研究案例方面的书 3 编程百例有使用价值 4 美国翻译过来的书质量不错 5 分类:c#语法,windows 编程,ADO.net,ASP.net,GDI+学习目标 学以致用,不要太泛泛的学本课程大致包含如下几方面内容:c#语法 开发环境 常用类库本讲稿第四页,共三十三页.NET概述 什么是.NET visual Studio.NET是微软最新软件开发平台,是当今世界上最先进功能最强的开发环境。Visual Studio.NET中集成了各种开发语言包括 c+,vb,c#等.利用Visual Studio.NET,用户可以非常轻松地创建应用程序和组件。C#与Visual Studio.NET关系 C#是Visual Studio.NET的主要开发语言 Visual Studio.NET是C#的唯一开发工具。Microsoft.NET技术特点。.NET的核心技术包括分布式计算、XML、组件技术、即时编译技术等。分布式计算通过b/s编程模式、webservice等技术实现。即时编译指将代码的编译分成两个阶段,第一阶段将原代码编译成中间语言,然后再根据不同的处理器和 操作平台将中间语言编译成目标代码。本讲稿第五页,共三十三页C#及NET的由来C#的由来 C#(C+,java)-C#2.0(微软公司开发).net的由来 visual studio 6.0-visual studio 7.0(.net1.0)-.net 2.0 .net先后经历了如下几个版本:.net2000 2005本讲稿第六页,共三十三页.NET平台的内容.NET Framework,它包括Common Language Runtime(CLR),和类库。通用语言运行环境是一个独立程序。最主要功能是将中间语言编译成目标代码,还用于运行和加载应用程序。类库分级组织了开发者可以在他们的应用程序中用来显示图形用户界面、访问数据库和实现文件操作以及在Web上进行通信的类。.NET开发工具,主要指Visual Studio.NET集成开发环境,用来开发和测试应用程序;.NET集成开发环境与其早期版本比主要差别是集成了多种程序设计语言(例如VB.NET和C#)ASP.NET 它是Active Server Pages(ASP)提高版,用来创建动态的Web内容和Web服务器应用程序,采用了HTML、XML和SOAP(简单对象访问协议)等Internet协议和数据格式。与asp相比,整个编程模型发生了重大变化,它采用了类似于单机版应用程序的开发方式,大大提高了编程效率。本讲稿第七页,共三十三页.NET中的MSIL原理图.NET采用特殊的方式编译和执行程序,先通过编译器编译,把原代码编译成微软中介语言MSIL(Microsoft Intermediate Language)文件,MSIL被启动时会启动MSIL编译器,将MSIL编译成机器码,然后加载CPU执行 本讲稿第八页,共三十三页Microsoft.NET的意义 对开发者的意义 对于开发者而言,.NET使他们能应用自己最熟悉的语言创建应用程序。.NET对开发人员来说十分重要,因为.NET不但会改变开发人员的开发应用程序的方式,而且使得开发人员能创建出全新的各种应用程序。包括b/s模式应用程序,webservice等等。对企业的意义.NET技术还可以实现多个应用程序在逻辑上的松散耦合链接。本讲稿第九页,共三十三页.net特点C#从C和C+派生而来,但却是完全重新开发的。微软公司借用了C和C+中一些已有的东西,并加入了新特性。这些特性使该语言更容易使用,其中的许多特性与Java极其类似。1简单(语法复杂,编程开发简单)2强大(Web应用,ADO.NET)3兼容(各种语言容易集成)本讲稿第十页,共三十三页net框架涵盖的知识范围数据库编程(ADO.net)Web开发 B/S模式,使用工具:网络编程 socket接口GDI+编程 包括图形程序和图像处理程序本讲稿第十一页,共三十三页.NET Framework.NET框架包括以下部分:1公共语言运行环境(CLR)2.NET框架类库(BCL)3数据库访问组件(ADO.NET)4基于ASP.NET编程框架的网络服务(Web Services)和网络表单(Web Forms)5Windows界面编程组件(WinForms)本讲稿第十二页,共三十三页.NET Framework的内容 公共语言运行时(CLR)公共语言运行时是一个在执行时管理代码的工具,它除了具有将中间代码编译成目标代码的功能而外,还提供如下服务;如内存管理、线程管理和远程处理,而且还强制实施类型安全检查。.NET Framework类库 主要用于创建web应用、数据库操作、窗体应用、文件管理等等。本讲稿第十三页,共三十三页.NET Framework结构 本讲稿第十四页,共三十三页.NET Framework的工作原理 .net Framework的基本原理是采用两阶段编译技术。即第一阶段生成MSIL,第二阶段利用即时编译器JIT编译生成目标代码。MSIL 即时编译器JIT 程序集 托管代码 垃圾回收 链接 本讲稿第十五页,共三十三页MSILMSIL包括用于加载、存储和初始化对象以及对对象调用的例行代码指令,还包括用于算术和逻辑运算、控制流、直接内存访问、异常处理和其他操作的用户专有的代码指令。当编译器产生MSIL的同时也产生元数据。用以描述代码类型,以及MSIL本身信息。运行时根据该信息加载并运行MSIL。中间语言(Intermediate Language,IL)代码类似于汇编语言,与微处理器指令之间存在镜像关系,使得从IL到机器代码的编译很快。本讲稿第十六页,共三十三页即时编译器JIT 公共语言运行库为所支持的每种CPU结构都提供了JIT编译器,源代码可以在不同结构的计算机上由JIT编译成不同的MSIL。JIT编译考虑了在执行过程中某些代码可能永远不会被调用的情况,不是将文件中的所有MSIL转换为本机代码,而是在执行期间根据需要转换MSIL并存储生成的本机代码以供接下来的调用。本讲稿第十七页,共三十三页程序集在编译应用程序时,所创建的MSIL代码存储在一个程序集中,程序集包括可执行的应用程序文件(这些文件可以直接在Windows上运行,不需要其他程序,其扩展名是.exe)和其他应用程序使用的 类库(其扩展名是.dll)。程序集还包含元数据(用以描述程序集本身)和资源(例如声音文件和图片)本讲稿第十八页,共三十三页托管代码 把代码编译为MSIL,再用JIT编译器把它编译为本机代码后,CLR的任务还没有全部完成。用.NET Framework编 写 的 代 码 在 执 行(这 个 阶 段 通 常 称 为 运 行 时(runtime)时是托管的。即CLR管理着应用程序,其方式是管理内存、处理安全性,以及允许进行跨语言调试等。相反,不在CLR控制之下运行的应用程序是非托管的,某些语言如C+可以用于编写这类应用程序,例如,访问操作系统的低级功能。但是,在C#中,只能编写在托管环境下运行的代码。我们将使用CLR的托管功能,让.NET自己与操作系统进行交互。本讲稿第十九页,共三十三页垃圾回收 托管代码最重要的一个功能是垃圾回收(garbage collection)。这种方法可以确保应用程序不再使用某些内存时,这些内存就会被完全释放。.NET垃圾回收会频繁检查计算机内存,从中删除不再需要的内容。本讲稿第二十页,共三十三页链接 编译为MSIL的C#代码不一定包含在单独的文件中,而可能存放在多个源代码文件中,最后把它们编译到一个程序集中。这个过程称为链接。这样做有以下几个好处:编译器处理几个较小的文件比处理一个大文件要简单得多;可以把逻辑上相关的代码分解到一个文件中,以便单独处理它,这也更易于在需要代码时找到它们;开发小组可以把编程工作分解为可管理的模块,让每个人编写一小块代码,而不会破坏已编写好的代码部分或者其他人正在处理的部分。本讲稿第二十一页,共三十三页 C#简介 C#与C+C#与Java使用C#编写程序命名空间C#2.0的新增功能本讲稿第二十二页,共三十三页C#与C+C#禁止使用指针(除了在不安全的代码块中);C#删除了预处理器的宏(但保留了条件编译和#defined 常数),复杂的宏在编译前展开时可能会出现各种错误;C#要求在引用变量的值之前,必须先显示声明该变量,并用一个初始值进行初始化;C#使用switchcase语句,为了防止程序员疏忽,switch语句中的每个case从句都必须有一个闭合的break命令;C#删除了全局函数,迫使用户进行面向对象的编程,程序中的每个函数都必须是类的一个成员,就连开始的Main()函数也定义为一个类的成员;在编译C#类库时,编译器会自动把它们显示为可以由客户应用程序重使用的组件;C#使用Windows Forms 支持快速开发图形化用户界面,用户不必编写代码来处理OnPaint事件;C#把类的定义和其执行放在一个文件中,使类更易于维护。本讲稿第二十三页,共三十三页C#与JavaC#的语法要比Java强大,因为C#支持运算符重载和类型安全的枚举,另外,如果需要,还可以在C#代码中选择嵌入式指针和其它不符合托管代码的语法,只要把它们放在“非安全”的代码块中即可。C#可以与其他.NET语言编写的代码进行无缝的集成,IT部门不需要标准化C#,就可以在工程中使用它。本讲稿第二十四页,共三十三页使用C#编写程序 控制台应用程序:这类应用程序是运行在DOS窗口上的纯文本应用程序,在测试类库或创建后台程序时,可用使用控制台应用程序。Windows应用程序:这些应用程序和vb或vc窗体程序一样,有我们很熟悉的Windows外观和操作方式,使用.NET Framework的Windows Forms模块就可以生成这种应用程序。Windows Form模块是一个控件库,其中的控件可以用于建立Windows用户界面(UI)。Web应用程序:这些是Web页,可以通过任何Web浏览器查看。.NET Framework包括一个动态生成Web内容的强大系统,采用类似窗体应用程序的开发过程。这个系统叫作Active Server Pages.NET(ASP.NET)。Web服务:这是创建各种分布式应用程序的新方式,使用Web服务可以通过Internet交换数据和服务。Web服务是一种应用程序,它可以使用标准的互联网协议,像HTTP和XML。可将Web服务视作Web上的组件编程。无论使用什么语言创建Web服务,都使用一样简单的编程模型。本讲稿第二十五页,共三十三页建立一个控制台程序,一个windows应用程序例1-1:一个简单的欢迎程序。/声明命名空间using System;/程序开始类class Welcome/Main方法public static void Main()/向控制台输出Console.WriteLine(Welcome to C#!);本讲稿第二十六页,共三十三页注释注释常被用来提供关于程序清单的描述性信息,以使程序具有可读性。注释语句不参与程序的执行1单行注释格式为:/注释内容用两个斜杠表示注释的开始,直到该行的结尾注释结束。2多行注释格式为:/*注释内容第1行注释内容第n行*/从“/*”开始到“*/”结束的内容均为注释内容,注释内容可以跨越多行。注意:多行注释不能嵌套。本讲稿第二十七页,共三十三页 Main方法Main方法是一个静态方法,它位于一个类或一个结构体中。声明Main方法的方式有三种:1返回一个空值static void Main()2返回一个整数static int Main()return 0;3带有参数值static int Main(string args)return 0;本讲稿第二十八页,共三十三页控制台程序的输入和输出1输入Console.Read()Console.ReadLine()这两种方法都用于从键盘读取信息,存入某个变量中,所不同的是:Console.ReadLine()方法用于将获得的数据保存在字符串变量中,而Console.Read()方法用于获得用户输入的任何值(可以是任何的字母或数字)的ASCII值。2输出Console.Write()Console.WriteLine()这两种方法都用于向屏幕输出结果,它们可用于所有的数据类型,所不同的是:Console.WriteLine()方法先输出信息后换行,而Console.Write()方法不换行输出信息。本讲稿第二十九页,共三十三页命名空间 命名空间是.NET避免类名冲突的一种方式,实际上,命名空间与类的关系类似于操作系统中文件夹和文件的关系,命名空间中的所有对象的名称都会自动加上一个该命名空间的名字作为前缀。另外,象文件夹一样命名空间是可以嵌套的。命名空间的声明由关键字namespace,跟着一个命名空间名称和一对花括号组成。例如;namespace n1 class A class B 命名空间的引用:命名空间名称.对象名 如:n1.A本讲稿第三十页,共三十三页C#2.0的新增功能 泛型是2.0版C#语言和公共语言运行库(CLR)中的一个新功能。使用泛型类型可以使程序员能够实现最大限度地重用代码、保护类型的安全以及获得更高的集合类性能。迭代器是 C#2.0 中的新功能。它是可以返回相同类型的值的有序序列的一段代码。迭代器可用作方法、运算符或get访问器,它使程序员在类或结构中支持foreach迭代,而不必实现整个IEnumerable接口。分部类型定义允许将单个类型(比如某个类)拆分为多个文件。Visual Studio 设计器使用此功能将它生成的代码与用户代码分离。使用partial关键字表明可在命名空间内定义该类、结构或接口的其他部分。可空类型允许变量包含未定义的值。在使用数据库和其他可能包含未含有具体值的元素的数据结构时,可以使用可空类型。本讲稿第三十一页,共三十三页本 章 小 结本章重点介绍.NET战略的提出和意义以及.NET Framework的工作原理,.NET Framework是一种新技术,该架构在应用程序开发环境中引入了一种执行操作的新方式。C#是可用于创建要运行在.NET CLR上的应用程序语言之一,它从C和C+语言演化而来,是Microsoft专门为使用.NET平台而创建的。所以理解并掌握.NET Framework的工作原理对于学习C#是非常重要的。另外,本章最后还对C#语言做了简单介绍。通过本章的学习,读者将对.NET Framework和C#有一个概括性的认识,激发读者进一步学习C#的兴趣。本讲稿第三十二页,共三十三页思考和练习 1.什么是.NET,简述.NET的意义。2.NET Framework包括哪些内容?3.简述.NET Framework的工作原理。4.C#与C+和Java语言相比有什么优缺点?5.什么是命名空间,使用命名空间有什么好处?本讲稿第三十三页,共三十三页