C#3.0从基础到实战课件完整版.ppt
第1章 Visual C#.NET 2008开发环境概述VisualC#.NET包括两部分内容,一部分是包括两部分内容,一部分是.NET框架,框架,一部分是一部分是C#语言。本章将首先概述语言。本章将首先概述.NET框架的历史、主框架的历史、主要内容(公共语言运行库和框架类库)、基于要内容(公共语言运行库和框架类库)、基于.NET框架的框架的WindowsForms和和ASP.NET的程序开发,接着分析的程序开发,接着分析C#语语言的特点以及相比其他语言的优势,然后介绍言的特点以及相比其他语言的优势,然后介绍VisualStudio2008的系统需求和安装过程,最后解释的系统需求和安装过程,最后解释.NET框架框架与与XML、Web服务、服务、ADO.NET等常见技术的关系等常见技术的关系章节内容章节内容1.1.NET框架概述框架概述1.2C#语言概述语言概述1.3VisualStudio2008开发工具安装开发工具安装1.4.NET与其他技术的关系与其他技术的关系1.5小结小结1.1.1 .NET框架的历史2002年初,微软发布了年初,微软发布了VisualStudio.NET2002开发工具,也推出了开发工具,也推出了.NET框架的第一个版本框架的第一个版本1.0。2003年春天,微软发布了年春天,微软发布了VisualStudio.NET2003以及以及.NETFramework1.12005年底,年底,.NETFramework2.0和和VisualStudio2005以及以及SQLServer2005一起发布。一起发布。会会有启发和帮助。有启发和帮助。2006年底,伴随年底,伴随Vista操作系统,操作系统,Microsoft推出了推出了.NETFramework3.0。2007年底,微软发布了年底,微软发布了VisualStudio.NET2008以及以及.NETFramework3.51.1.2 什么是.NET框架1.1.3 公共语言运行库CLR公共语言运行时相当于公共语言运行时相当于Java中的虚拟中的虚拟机。所有机。所有.NET应用程序都是在应用程序都是在CLR上运行上运行的的。.NET程序执行原理 1.1.4 .NET Framework类库1.1.5 Windows Forms程序开发概述Windows FormsASP.NETWeb Forms/Web Service.NET框架基础类库(FCL)GDI+(图形呈现引擎)ADO.NET数据访问库网路通信/远程通信/程序通信代码访问的安全性1.1.6 ASP.NET开发框架概述ASP.NET具有如下特点。具有如下特点。采用代码隐藏技术将代码和标记分离,使用采用代码隐藏技术将代码和标记分离,使用C#等面向对象的语等面向对象的语言,简单明了。同时代码只在服务器端编译运行,开发人员不言,简单明了。同时代码只在服务器端编译运行,开发人员不再需要在客户端代码和服务器端来回切换,提高了工作效率。再需要在客户端代码和服务器端来回切换,提高了工作效率。Web窗体简单明了,开发人员只需将控件拖放在页面上,然后窗体简单明了,开发人员只需将控件拖放在页面上,然后编写代码实现控件的效果即可完成以往需要大量代码才能实现编写代码实现控件的效果即可完成以往需要大量代码才能实现的功能。的功能。提供了服务器控件。这是提供了服务器控件。这是Web窗体编程模型的主要组件,窗体编程模型的主要组件,ASP.NET服务器控件映射服务器控件映射HTML中的一些元素,提供了强有力中的一些元素,提供了强有力的服务器编程能力。的服务器编程能力。支持支持Web服务。这是服务。这是ASP.NET的关键之处,它允许开发人员通的关键之处,它允许开发人员通过一次性编程为互联网上的应用提供组件服务。过一次性编程为互联网上的应用提供组件服务。Web服务基于服务基于SOAP(简单对象访问协议),因此可以跨平台进行操作。(简单对象访问协议),因此可以跨平台进行操作。ASP.NET提供了强有力的缓存引擎,开发人员可以通过减少从提供了强有力的缓存引擎,开发人员可以通过减少从Web服务器和数据库处理器处理加载的次数来改善程序的性能。服务器和数据库处理器处理加载的次数来改善程序的性能。1.2C#语言概述语言概述Microsoft是是这这样样描描述述C#的的:“C#是是从从C和和C+派派生生来来的的一一种种简简单单、现现代代、面面向向对对象象和和类类型型安安全全的的编编程程语语言言”。C#是是从从C/C+编编程程语语言言家家族族移移植植过过来来的的,旨旨在在结结合合VisualBasic的的快快速速开开发发能能力和力和C+的强大灵活的能力。的强大灵活的能力。1.2.1C#语言的特点语言的特点(1)简洁的语法)简洁的语法(2)精心的面向对象设计)精心的面向对象设计(3)与)与Web的紧密结合。的紧密结合。(4)优秀的安全性与错误处理能力。)优秀的安全性与错误处理能力。1.2.2与其他语言的比较分析与其他语言的比较分析(1)C#语言与语言与C+语言的比较分析如下语言的比较分析如下编译目标:编译目标:C+代码直接编译为本地可执行的代码,而代码直接编译为本地可执行的代码,而C#语言默语言默认编译为中间语言代码,执行时再通过实时编译器将需要的模块认编译为中间语言代码,执行时再通过实时编译器将需要的模块临时编译为本地代码。临时编译为本地代码。内存管理:内存管理:C+语言需要适时地删除动态分配给对象的内存资源,语言需要适时地删除动态分配给对象的内存资源,而而C#语言则不必如此。语言则不必如此。C#语言采用垃圾回收机制,能够自动在合语言采用垃圾回收机制,能够自动在合适的时机回收不再使用的内存资源。适的时机回收不再使用的内存资源。指针:指针:C+语言中会大量地使用指针,而语言中会大量地使用指针,而C#语言使用对类实例的语言使用对类实例的引用。若要在引用。若要在C#语言中使用指针,必须声明为非安全的,不过通语言中使用指针,必须声明为非安全的,不过通常情况下在常情况下在C#语言中不必使用指针。语言中不必使用指针。字符串处理:在字符串处理:在C#语言中,字符串是作为一种基本数据类型来使语言中,字符串是作为一种基本数据类型来使用的,因此相比用的,因此相比C+语言中对字符串的处理要简单得多。语言中对字符串的处理要简单得多。多继承:多继承:C+语言允许类的多继承,而语言允许类的多继承,而C#语言只允许类的单继承,语言只允许类的单继承,但可以通过接口实现多继承。但可以通过接口实现多继承。1.2.2与其他语言的比较分析与其他语言的比较分析(2)C#语言与语言与Java语言的比较分析如下语言的比较分析如下从语法上讲,从语法上讲,C#语言和语言和Java语言非常相似,只是在细节上有一些语言非常相似,只是在细节上有一些差别。实际上,差别。实际上,C#语言和语言和Java语言的主要差别不在语言本身,而语言的主要差别不在语言本身,而在它们所执行的平台上。在它们所执行的平台上。Java程序需要一个运行环境程序需要一个运行环境JRE(JavaRuntimeEnvironment)来执行代码,但)来执行代码,但JRE只限于在只限于在Java这一门语言中这一门语言中使用;使用;C#语言也需要一个运行环境语言也需要一个运行环境CLR(CommonLanguageRuntime),但是),但是CLR提供了对多种语言的支持。提供了对多种语言的支持。Java源代码可以被编译为字节代码的一种中间状态,然后由已提源代码可以被编译为字节代码的一种中间状态,然后由已提供的虚拟机执行这些字节代码;供的虚拟机执行这些字节代码;C#代码也被编译为一种中间状态,代码也被编译为一种中间状态,称为中间语言(称为中间语言(MSIL),但是中间语言代码则被传输到由),但是中间语言代码则被传输到由CLR管管理的执行进程上,然后通过理的执行进程上,然后通过CLR的实时编译器编译为本地代码来的实时编译器编译为本地代码来执行。执行。与与Java语言相比,语言相比,C#语言也存在很多不同和改进之处。例如,语言也存在很多不同和改进之处。例如,C#语言的文件名不受文件中类名的限制,而在语言的文件名不受文件中类名的限制,而在Java语言中则有此语言中则有此限制。另外,限制。另外,C#语言也提供了一些在语言也提供了一些在Java语言中没有的功能,如语言中没有的功能,如运算符重载、封箱和装箱以及方法隐藏等。运算符重载、封箱和装箱以及方法隐藏等。1.2.2与其他语言的比较分析与其他语言的比较分析(3)C#语言与语言与VB.NET语言的比较分析如下。语言的比较分析如下。和和C#语言一样,语言一样,VB.NET语言也是基于语言也是基于.NETFramework和和CLR的高级语言。的高级语言。C#语言有一些语言有一些VB.NET语言所不具备的特性。例如,语言所不具备的特性。例如,C#语言可以语言可以使用非托管代码、移位操作符、内嵌的文档(使用非托管代码、移位操作符、内嵌的文档(XML)和运算符重)和运算符重载等。载等。VB.NET语言也有其自身的优点。对于熟悉语言也有其自身的优点。对于熟悉VB语言的开发人员,语言的开发人员,既可以使用既可以使用.NET之前的语法格式及函数,也可以使用之前的语法格式及函数,也可以使用.NET规定的规定的语法格式和面向对象的设计思想。语法格式和面向对象的设计思想。由于由于C#语言最初就完全按照面向对象的思想来设计,而且使用的语言最初就完全按照面向对象的思想来设计,而且使用的全部是全部是.NET框架定义的语法格式,不存在与框架定义的语法格式,不存在与.NET之前版本兼容的之前版本兼容的问题,因此结构更加清晰,语法更加简洁。问题,因此结构更加清晰,语法更加简洁。C#语言作为一种高级语言标准,其基本的内部实现形式是公开的,语言作为一种高级语言标准,其基本的内部实现形式是公开的,因此更容易被多种平台接受和广泛地应用。因此更容易被多种平台接受和广泛地应用。1.2.3C#与与.NETFrameWork、CLR、VisualStudio.NET的版本关系的版本关系时间C#版本CLR版本.NET Framework版本Visual studio.NET版本20021.01.01.0Visual studio.NET 200220031.11.11.1Visual studio.NET 200320052.02.02.0Visual studio.NET 200520062.02.03.0Visual studio.NET 200520073.02.03.5Visual studio.NET 20081.3 Visual Studio 2008开发工具安装项目配置要求支持的操作系统Windows Server 2003、Windows Vista、Windows XPCPU1.6GHz以上内存384MB以上硬盘5400 RPM 5G以上硬盘显示分辨率1024768或以上IEIE6.0及以上数据访问组件MDACMDAC 2.8以上 V Vi is su ua al l S St tu ud di io o 2 20 00 08 8 系系统统配配置置要要求求 1.3 Visual Studio 2008开发工具安装1.4 .NET与其他技术的关系1.4.1 XML、Web服务与.NET框架XML:XML的全称是Extensible Markup Language,主要作用是作为系统与系统之间传输数据的载体。Web服 务:Web服 务 又 称 XML Web Service(或WebXML),建立在XML公共协议基础上,能够快捷和方便地综合各种系统、商务和应用平台,1.4.2 .NET 框架与ADO.NET组件的整合方式ADO.NET是一些与数据库访问相关的类的集合,包含用于连接数据库、执行命令和检索结果的.NET框架数据提供程序。而.NET框架除了ADO.NET的类的集合外,还包含程序的整个运行支持环境。1.5 小结C#是一种编程语言,是一种编程语言,.NET是一种开发框架,是一种开发框架,C#和和.NET的的关系如同鱼与水的关系。所以,如果要使用关系如同鱼与水的关系。所以,如果要使用C#高效地开发高效地开发应用程序,掌握应用程序,掌握.Net框架就显得非常重要。对于框架就显得非常重要。对于.NET框架,框架,本章主要介绍了其两个最重要的组件,即公共语言运行库本章主要介绍了其两个最重要的组件,即公共语言运行库(CLR)和)和.NET框架类库(框架类库(FCL)。)。C#语言是语言是.NET框架框架的首选语言,因为它直接面向的首选语言,因为它直接面向.NET框架而生,具有其他语框架而生,具有其他语言所没有的后发优势。言所没有的后发优势。VisualStudio2008是一套完整的编程、调试、生成、部是一套完整的编程、调试、生成、部署工具。借助署工具。借助VisualStudio2008集成开发环境,可快速集成开发环境,可快速开发基于开发基于.NETFramework3.5和和C#3.0的各种类型的应用的各种类型的应用程序。有关程序。有关VisualStudio2008集成开发环境的介绍可参集成开发环境的介绍可参见后续章节。见后续章节。本章最后介绍了本章最后介绍了.NET与与XML、WEB服务、服务、ADO.NET等常等常见技术之间的关系。在见技术之间的关系。在.NET中,这些技术可以实现无缝的中,这些技术可以实现无缝的集成。集成。第2章 熟练使用Visual Studio 2008工具“工欲善其事,必先利其器工欲善其事,必先利其器”,为,为了能够更高效地利用了能够更高效地利用VisualStudio2008开发工具,必须能熟练掌握开发工具,必须能熟练掌握VisualStudio2008集成开发环境。集成开发环境。章节内容章节内容2.1Visual Studio 2008环境配置2.2解决方案资源管理器的使用解决方案资源管理器的使用2.3属性管理器的使用属性管理器的使用2.4IDE中的快捷键中的快捷键2.5小结小结2.1.1 环境设置配置设置窗口,即环境配置设计器,主要用于根据配置设置窗口,即环境配置设计器,主要用于根据所使用的语言优化配置环境所使用的语言优化配置环境(1)如果首次启动)如果首次启动VisualStudio2008,会提示,会提示选择默认的环境配置选择默认的环境配置.(2)环境配置完成后,若想修改配置,可)环境配置完成后,若想修改配置,可在菜单栏中单击在菜单栏中单击【工具工具】|【导入导出设置导入导出设置】命令。命令。2.1.1 环境设置也可以从一个文件中导入已经定义好的环境也可以从一个文件中导入已经定义好的环境设置。设置。2.1.1 环境设置也可以把当前设置全部或部分导出到也可以把当前设置全部或部分导出到.vssettings文件中,可以在其他计算机上文件中,可以在其他计算机上使用此文件,也可以与其他开发人员共享使用此文件,也可以与其他开发人员共享此文件。例如,可以选择只导出快捷键组此文件。例如,可以选择只导出快捷键组合和编辑器设置合和编辑器设置。2.1.1 环境设置2.1.2 工具栏配置2.1.3 工具箱配置打开工具箱:打开工具箱:【视图视图】|【工具箱工具箱】命令命令隐藏工具箱:隐藏工具箱:【窗口窗口】|【隐藏隐藏】命令命令将工具箱设为自动关闭:将工具箱设为自动关闭:【窗口窗口】|【自动隐藏自动隐藏】将工具箱移动到其他位置:将工具箱移动到其他位置:停靠工具箱:停靠工具箱:工具箱显示为选项卡式编辑窗口:工具箱显示为选项卡式编辑窗口:恢复工具箱的所有默认选项卡及其默认图标恢复工具箱的所有默认选项卡及其默认图标2.2 解决方案资源管理器的使用2.3 属性管理器的使用打开属性管理器打开属性管理器查看与修改属性查看与修改属性添加事件添加事件2.4 IDE中的快捷键(1)调试快捷键)调试快捷键快捷键功能快捷键功能F5启动调试Ctrl+F9启用/停止断点Shift+F5停止调试Ctrl+Shift+F9删除所有断点Ctrl+F5开始执行(不调试)F10逐过程Shift+F5 停止调试F11逐语句Ctrl+Shift+F5重启调试Ctrl+F10运行到光标处F6编译/生成解决方案Ctrl+F6切换所有打开编辑窗口F9插入/取消断点F7切换代码和窗体设计器2.4 IDE中的快捷键(1)调试快捷键)调试快捷键快捷键功能快捷键功能F5启动调试Ctrl+F9启用/停止断点Shift+F5停止调试Ctrl+Shift+F9删除所有断点Ctrl+F5开始执行(不调试)F10逐过程Shift+F5 停止调试F11逐语句Ctrl+Shift+F5重启调试Ctrl+F10运行到光标处F6编译/生成解决方案Ctrl+F6切换所有打开编辑窗口F9插入/取消断点F7切换代码和窗体设计器2.4 IDE中的快捷键(2)编辑快捷键)编辑快捷键快捷键功能快捷键功能Ctrl+A全选Alt+F12查找符号(列出所有的查找结果)Ctrl+C复制选中内容Shift+F12查找选中对象所有引用Ctrl+V粘贴复制内容Ctrl+Shift+V循环粘贴剪贴板中的内容Ctrl+Z撤销编辑Ctrl+左右箭头键一次可以移动一个单词Ctrl+S保存项目Ctrl+上下箭头键滚动代码屏幕,但不移动光标位置Ctrl+K,K添加删除书签Ctrl+Shift+L删除当前行Ctrl+K,I快速信息Ctrl+M,O折叠代码定义Ctrl+K,M生成方法存根Ctrl+M,L展开代码定义Ctrl+K,X插入代码段Ctrl+M,P停止大纲显示快捷键功能快捷键功能Ctrl+K,S插入外侧代码Shift+Alt+箭头键选择矩形文本Ctrl+W选中整个单词Alt+鼠标左键选择矩形文本Ctrl+Backspace删除光标左边所有Ctrl+Shift+U全部变为大写Ctrl+Delete删除光标右边所有Ctrl+U全部变为小写Shift+Delete整行删除Ctrl+Shift+End选择到文档末尾Ctrl+Up在可见范围内向上移动光标Ctrl+Shift+Home选择到文档开始Ctrl+Down在可见范围内向下移动光标Shift+End选择到行尾Shift+F3查找上一个Shift+Home选择到行开始处Ctrl+H替换Shift+Alt+End垂直选择到最后尾Ctrl+Shift+H在文件中替换Shift+Alt+Home垂直选择到最前面2.4 IDE中的快捷键2.4 IDE中的快捷键(3)窗口快捷键)窗口快捷键快捷键功能快捷键功能F4打开属性窗口Ctrl+Shift+N新建项目Ctrl+Shift+C显示类视图窗口Ctrl+Shift+O打开项目Ctrl+Alt+B断点窗口Ctrl+Shift+S全部保存Ctrl+Alt+I即时窗口Ctrl+Shift+A新建项Ctrl+Alt+V局部变量监视窗口Ctrl+O打开文件Ctrl+Alt+W监视窗口Ctrl+N新建文件Ctrl+Tab活动窗口切换Ctrl+F4关闭文档窗口2.5 小结VisualStudio2008是是高高度度集集成成的的IDE,了了解解和和熟熟练练使使用用这这个个工工具具是是进进一一步步学学习习C#.Net的的前前提提,也也是是以以后后利利用用VisualStudio2008进进行行实实际际软软件件开开发发的的 基基 础础。本本 章章 主主 要要 介介 绍绍 了了 VisualStudio2008中中最最常常用用的的环环境境设设置置、工工具具栏栏、工工具具箱箱、解解决决方方案案资资源源管管理理器器和和 属属 性性 管管 理理 器器,并并 在在 最最 后后 介介 绍绍 了了VisualStudio2008中中常常用用快快捷捷键键,掌掌握握这这些些管管理理器器和和常常用用的的快快捷捷键键对对快快速速开发软件具有重要的实际意义。开发软件具有重要的实际意义。第3章 C#.NET语言基础 本章将以第一个本章将以第一个C#C#程序程序“HelloWorldHelloWorld”为例,向读者演示为例,向读者演示C#C#应用程序的代码组成和应用程序的代码组成和编译过程,然后以开发一个真实的编译过程,然后以开发一个真实的“学生信学生信息管理系统息管理系统”为背景,详细讲述数据类型、为背景,详细讲述数据类型、常量、变量等常量、变量等C#C#语言基础知识。语言基础知识。章节内容章节内容3.1引言引言3.2编写第一个编写第一个C#程序程序3.3数据类型数据类型3.4常用类型常用类型3.5常量和变量常量和变量3.6小结小结3.1引言引言计算机中的高级语言(如计算机中的高级语言(如C#、C+等)和现实世等)和现实世界中的人类语言(如汉语、英语等)有很多相似之界中的人类语言(如汉语、英语等)有很多相似之处:处:(1)人类语言中的组成元素有单词、短语、句子、段)人类语言中的组成元素有单词、短语、句子、段落和文章,在计算机高级语言中相对应有常量与变量、落和文章,在计算机高级语言中相对应有常量与变量、表达式、语句、函数和程序。表达式、语句、函数和程序。(2)人类语言中的单词、短语和句子有不同的性质,)人类语言中的单词、短语和句子有不同的性质,如形容词、动词短语、感叹句等,计算机高级语言中的如形容词、动词短语、感叹句等,计算机高级语言中的常量、变量、表达式也有不同的数据类型,如整型常量、常量、变量、表达式也有不同的数据类型,如整型常量、浮点型变量、字符类型表达式等。浮点型变量、字符类型表达式等。了解这些相似之处,对理解和掌握计算机高级语言了解这些相似之处,对理解和掌握计算机高级语言会有启发和帮助。会有启发和帮助。3.2编写第一个编写第一个C#程序程序C#应用程序的常用类型主要有应用程序的常用类型主要有3种,分别为控制台应用程种,分别为控制台应用程序、序、Windows窗体应用程序和窗体应用程序和Web应用程序,具体特点应用程序,具体特点分别如下。分别如下。(1)控制台应用程序是没有窗口的应用程序,通过键盘)控制台应用程序是没有窗口的应用程序,通过键盘以输入命令行的形式操作程序。先前的以输入命令行的形式操作程序。先前的DOS程序大都是这程序大都是这种类型程序,现在一般用作后台服务。种类型程序,现在一般用作后台服务。(2)Windows窗体应用程序是有窗口的应用程序,主要窗体应用程序是有窗口的应用程序,主要通过鼠标进行操作。因其图形化操作和界面直观等优点,通过鼠标进行操作。因其图形化操作和界面直观等优点,非常受欢迎,当前大多数应用程序都是这种类型。非常受欢迎,当前大多数应用程序都是这种类型。(3)Web应用程序其实就是将应用程序其实就是将Windows窗体应用程序以窗体应用程序以网页的形式表现出来,是网页的形式表现出来,是Web网站与传统应用程序的结合网站与传统应用程序的结合体。这种类型的应用程序越来越多,有着广泛的应用前景,体。这种类型的应用程序越来越多,有着广泛的应用前景,例如网上办公和网上购物系统,都是这种类型的应用程序。例如网上办公和网上购物系统,都是这种类型的应用程序。3.2编写第一个编写第一个C#程序程序控制台应用程序比较简单,通常作为初学者控制台应用程序比较简单,通常作为初学者学习的第一种程序类型,用来熟悉最基本学习的第一种程序类型,用来熟悉最基本的语法知识。本节介绍如何在的语法知识。本节介绍如何在VisualStudio2008下创建下创建C#控制台应用程序控制台应用程序“HelloWorld”。3.2.1代码结构代码结构创建第一个创建第一个“HelloWorld”控制台应用程序步骤:控制台应用程序步骤:打开打开VisualStudio2008,在菜单栏中单击,在菜单栏中单击【文件文件】|【新建新建】|【项目项目】命令,弹出命令,弹出【新建项目新建项目】窗口。此窗口。此窗口列出了窗口列出了VisualC#能够创建的应用程序类型,选择能够创建的应用程序类型,选择“控制台应用程序控制台应用程序”作为项目类型,并将应用程序的作为项目类型,并将应用程序的名称更改为名称更改为“HelloWorld”,单击,单击【确定确定】按钮,如按钮,如图图31所示。所示。新建新建“HelloWorld”项目项目代码演示代码演示usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceHelloWorldclassProgramstaticvoidMain(stringargs)Console.WriteLine(HelloWorld!);Console.ReadLine();命名空间命名空间类类入口函数入口函数3.2.1代码结构代码结构C#程序由命名空间(程序由命名空间(namespace)、类)、类(class)和程序入口函数()和程序入口函数(Main函数)组成。函数)组成。命名空间是类的逻辑组合。命名空间和类的关系命名空间是类的逻辑组合。命名空间和类的关系可以理解为文件夹和文件的关系。使用命名空间可以理解为文件夹和文件的关系。使用命名空间使得类之间更具有组织性,且避免了类的命名冲使得类之间更具有组织性,且避免了类的命名冲突问题。突问题。如果要创建一个类,要使用如果要创建一个类,要使用namespace给出命名给出命名空间的名称空间的名称;如果使用类,要使用如果使用类,要使用using关键字指关键字指定该类所属的命名空间,或给出类的定该类所属的命名空间,或给出类的“绝对路径绝对路径”,即,即“命名空间名类名命名空间名类名”;如果要使用同一;如果要使用同一个命名空间的类,则不需要使用个命名空间的类,则不需要使用using来引用命名来引用命名空间。空间。3.2.1代码结构代码结构类即一组属性和方法的集合。类即一组属性和方法的集合。C#使用类来使用类来搭建整个应用程序,没有全局函数和全局搭建整个应用程序,没有全局函数和全局变量,这也体现了面向对象的程序设计思变量,这也体现了面向对象的程序设计思想。想。Main函数是函数是C#应用程序的入口,即应用程序的入口,即C#应用应用程序执行的第一个函数。程序执行的第一个函数。C#程序由多个类程序由多个类搭建而成,入口就是搭建而成,入口就是Main函数。一个应用函数。一个应用程序中必须有一个程序中必须有一个Main函数且只能有一个函数且只能有一个类包含类包含Main函数,并要求函数,并要求“Main”的首字的首字母大写。母大写。3.2.2编译运行编译运行编译过程:编译过程:.cs文件文件.exe可执行程序。可执行程序。对于对于VisualStudio2008开发平台下的开发平台下的C#应用程序,可单击工具栏中的启动按钮或应用程序,可单击工具栏中的启动按钮或按按【F5】键(按键(按【F5】键进入调试模式,键进入调试模式,按按【Ctrl】+【F5】组合键进入非调试模式)组合键进入非调试模式)来编译运行。来编译运行。程序运行界面程序运行界面运行按钮运行按钮代码分析代码分析usingSystem;表明该程序要使用表明该程序要使用System命名空间下的类,因此用命名空间下的类,因此用using来指明引用的命名空间。如果不指明命名空间,来指明引用的命名空间。如果不指明命名空间,就使用该空间下的类,会出现编译错误。就使用该空间下的类,会出现编译错误。namespaceHelloWorld表明该程序使用表明该程序使用namespace关键词声明了一个命名空关键词声明了一个命名空间间HelloWorld,如果其他类要调用该命名空间下定义,如果其他类要调用该命名空间下定义的类,需要使用的类,需要使用using关键词,即关键词,即usingHelloWorld。classProgram表明该程序使用表明该程序使用class关键词定义了一个类关键词定义了一个类Program,该类属于命名空间该类属于命名空间HelloWorld代码分析代码分析staticvoidMain(stringargs)声明了声明了Main函数,函数,static是修饰符(其作用将在后续章是修饰符(其作用将在后续章节详细介绍),节详细介绍),void表明表明Main函数没有返回值,函数没有返回值,stringargs是参数列表。是参数列表。Console.WriteLine(HelloWorld!);使用命名空间使用命名空间System里的里的Console类中的类中的WriteLine函数输出字符串函数输出字符串“HelloWorld”。如果程序头未引用。如果程序头未引用System命名空间,须使用命名空间,须使用System.Console.WriteLine全称。全称。Console.ReadLine();调用命名空间调用命名空间System中中Console类中的类中的ReadLine函函数,该函数等待键盘输入,按数,该函数等待键盘输入,按【Enter】键结束等待。键结束等待。3.3数据类型数据类型当学习某一门人类语言时,例如汉语中的词当学习某一门人类语言时,例如汉语中的词组,会发现汉语中的词语有名词和动词等组,会发现汉语中的词语有名词和动词等分类,这称为词性。计算机高级语言的数分类,这称为词性。计算机高级语言的数据有整型和浮点型等,这叫做数据类型。据有整型和浮点型等,这叫做数据类型。数据类型的作用:数据类型的作用:编译器可根据数据类型判断它们是否可以参加编译器可根据数据类型判断它们是否可以参加某种运算,从而帮助开发人员减少语法错误。某种运算,从而帮助开发人员减少语法错误。不同的数据类型,在内存中所占字节数不同,不同的数据类型,在内存中所占字节数不同,如果要处理的数据量非常大,选择适合的数据如果要处理的数据量非常大,选择适合的数据类型能够在很大程度上节省内存空间。类型能够在很大程度上节省内存空间。C#数据类型图数据类型图3.3数据类型数据类型值类型和引用类型是值类型和引用类型是C#中两种主要的数据中两种主要的数据类型;类型;var类型为类型为C#3.5新增类型,详细介绍参见新增类型,详细介绍参见第第13章。章。指针类型仅可用于指针类型仅可用于unsafe模式,用法类似模式,用法类似C+中的指针,这里不再赘述。(中的指针,这里不再赘述。(unsafe模式引用非模式引用非.netDLL提供的如提供的如C编写的编写的外部函数,需要指针来传递该函数外部函数,需要指针来传递该函数,优点,优点是可以调用其他是可以调用其他dll的函数,提高了兼容性的函数,提高了兼容性;缺点是容易内存泄漏);缺点是容易内存泄漏)数据类型划分依据数据类型划分依据C#数据类型按照数据的存储模型分为值类型、引数据类型按照数据的存储模型分为值类型、引用类型、指针类型和用类型、指针类型和var类型类型。数据的存储模型指的是数据在内存中的保存方式。数据的存储模型指的是数据在内存中的保存方式。内存中有两个区域可以存放数据,一个是栈区,内存中有两个区域可以存放数据,一个是栈区,另外一个是堆区。栈区存放是编译期间就分配好另外一个是堆区。栈区存放是编译期间就分配好的内存空间,不会动态增长;堆区是程序运行期的内存空间,不会动态增长;堆区是程序运行期间动态分配的内存空间。因此存储在栈中的数据间动态分配的内存空间。因此存储在栈中的数据长度通常较小且固定,存储在堆中的数据可以动长度通常较小且固定,存储在堆中的数据可以动态增长且所需空间通常较大。态增长且所需空间通常较大。值类型的数据存储所需空间通常较小,使用栈区值类型的数据存储所需空间通常较小,使用栈区的内存,而引用类型的数据所需空间较大,使用的内存,而引用类型的数据所需空间较大,使用堆区的内存。堆区的内存。3.4常用类型常用类型3.4.1整型整型3.4.2浮点型浮点型3.4.3decimal类型类型3.4.4布尔型布尔型3.4.5结构体类型结构体类型3.4.6枚举类型枚举类型3.4.7string类型类型3.4.8Object类型类型3.4.9数据类型的转换数据类型的转换3.4.1整型整型整型就是整数类型,整型就是整数类型,C#整型共有整型共有9种数据类型种数据类型。类型数值范围特征sbyte-128127有符号8位整数byte0255无符号8位整数charU+0000U+ffff16位Unicode字符short-32,76832,767有符号16位整数ushort065,535无符号16位整数int-2,147,483,6482,147,483,647有符号32位整数uint04,294,967,295无符号32位整数long-9,223,372,036,854,775,8089,223,372,036,854,775,807有符号64位整数ulong018,446,744,073,709,551,615无符号64位整数3.4.1整型整型注意:注意:有符号指的是第一位二进制数表示符号,有符号指的是第一位二进制数表示符号,0代表正数,代表正数,1代表负数;无符号指的是所有的位数都用来表示数值,代表负数;无符号指的是所有的位数都用来表示数值,没有符号位,均为正数。例如,没有符号位,均为正数。例如,sbyte是一个有符号是一个有符号8位二进制数,第一位用来表示符号,因此位二进制数,第一位用来表示符号,因此sbyte表示的表示的范围为范围为128127;byte是一个无符号是一个无符号8位二进制数,位二进制数,8位全用来表示数值,表示范围为位全用来表示数值,表示范围为0255,其他类型可以,其他类型可以依此类推。依此类推。char类型也是一种整型,常用来表示字符,由类型也是一种整型,常用来表示字符,由16位二位二进制数组成,表示范围为进制数组成,表示范围为065535,代表世界上大多数,代表世界上大多数书面语言符号。这种字符又称为书面语言符号。这种字符又称为Unicode字符,在使用字符,在使用时可以写成字符、十六进制和时可以写成字符、十六进制和unicode字符,例如字符字符,例如字符A可以表示为可以表示为A、x0041和和u0041。使用整型使用整型 byteage=18;charsex=男男;longStudentNumber=200745054489;注意,注意,char类型一次只能赋值一个字符,类型一次只能赋值一个字符,不能赋值两个字符,例如不能赋值两个字符,例如男生男生。注意整型溢出,注意整型溢出,byteage=300,产生溢出,产生溢出错误。错误。3.4.1整型整型对于等号右边的整数常数,对于等号右边的整数常数,C#会按照默认的方式来判断会按照默认的方式来判断所属类型,即按照一定的顺序判断整数的类型,即所属类型,即按照一定的顺序判断整数的类型,即int、uint、long、ulong。如果不希望如果不希望C#使用上述默认的方式来判断一个整数数值使用上述默认的方式来判断一个整数数值常数的类型,可以通过添加后缀来指定整数常数的类型。常数的类型,可以通过添加后缀来指定整数常数的类型。u(或者(或者U)后缀:加在整数常数后面,代表该常数是)后缀:加在整数常数后面,代表该常数是uint类型类型或者或者ulong类型。具体类型由常数的实际值决定。类型。具体类型由常数的实际值决定。C#优先匹配优先匹配uint类型。类型。l(或者(或者L)后缀:加在整数常数后面,代表该常数是)后缀:加在整数常数后面,代表该常数是long类型或类型或者者ulong类型。具体类型由常数的实际值决定。类型。具体类型由常数的实际值决定。C#优先匹配优先匹配long类型。类型。ul后缀:加在整型常数后面,代表该常数是后缀:加在整型常数后面,代表该常数是ulong类型。类型。例如:例如:uintage=18U;longStudentNumber=200745054489L;对于不可打印字符,对于不可打印字符,例如回车符、换行符例如回车符、换行符等,则需要采用转义等,则需要采用转义符。符。charc=a;Console.WriteLine(c);Console.WriteLine(abcn)转义符字符十六进制表示单引号0