




已阅读5页,还剩664页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本课程主要讲授的内容包括:C#的基本语法、语句、方法;C#面向对象编程技术;WINDOWS编程;输入输出;数据库访问技术等。,第一章.Net环境和C#语言简介,本章内容:,Microsoft.Net概述C#语言介绍,本章内容:,本章主要简单介绍了Microsoft.Net和C#语言。首先介绍了C#语言的基础Microsoft.Net平台的设计理念、主要构成和设计目标,然后介绍了C#语言的特点和运行模型。,1.1Microsoft.Net概述,Microsoft.Net是微软公司面向下一代互联网软件和服务战略,它的出现标志着新的软件设计理念和服务理念的产生。,Microsoft.Net是微软公司面向下一代互联网软件和服务战略,它的出现标志着新的软件设计理念和服务理念的产生。,一、Microsoft.Net的设计理念,Microsoft.Net努力改变人类适应机器、适应技术的现状,为各类用户提供一种简单的操作信息的能力,使得所以商业用户和个人用户都能方便查找和使用其中的信息,任何规模的公司都可以使用相同的工具与他们的供应商、商业伙伴和客户高效地沟通和分享信息,从而创建一种全新的协同工作模式:,对于用户来说,Microsoft.Net意味更简单化的整体服务:统一的信息浏览、编辑和授权,查看资料,工作,联机/脱机媒体。对于企业来说,Microsoft.Net意味着统一的信息浏览、编辑和授权;丰富的同步传播;密切的移动通信联系;得力的信息管理和电子商务工具,在基于Internet和Intranet的服务程序之间灵活地切换,为动态商务伙伴关系的建立提供支持。,对独立软件开发商来说,Microsoft.Net意味着创造基于Internet的更多新型高级服务的机会,这些服务可以借助Internet自动的从本地或远程获取和利用所需的信息,而无须为不同的工作环境重新编写程序。,Microsoft.Net主要包括一下四个方面的内容:构造和管理新一代服务的基本结构和工具,包括.Net框架(Framework)、VisualStdio.Net、.Net企业服务器和Windows.Net。,二、Microsoft.Net的组成,创建互联网操作系统的构建块,包括PassPort.Net(用于用户认证)、用于文件存储的服务、用户首选项服务、日历管理以及众多的其它服务。能够启用新型智能互联网设备的.Net设备软件。.Net用户体验。,三、.Net框架和C#,.Net框架是.Net平台基础架构,它消除了各类编程语言之间的差别,从而实现了跨语言平台编程的能力。.Net的这种能力主要来源于公共语言运行时(CommonLanguageRuntime,CLR)和类库。公共语言运行时和类库(WindowsForms,ADO.Net和ASP.Net)统一了各类语言类型,从而使得各种编程语言间无缝集成成为可能。,C#(读Csharp)语言就是微软为解决上述问题而设计的,它是微软公司为.Net计划开发推出的核心编程语言,该语言几乎综合了目前所有编程语言的优点。C#是一种现代的面向对象的程序开发语言,开发人员能够利用它在.Net平台上快速开发种类丰富的应用程序,并可以转换为Web服务。,1.2C#语言介绍,C#语言是专门为.Net应用而开发的语言,并且在设计过程中综合了其它编程语言的优点,即满足了应用程序的快速开发能力,又没有牺牲各种灵活性,同时它忠实地继承了C和C+的优点,一、C#的语言特点,C#语言作为一种新生语言与其它编程语言相比有一下几个突出的特点:简洁的语法面向对象的特点与Web的紧密结合安全性和错误处理版本处理灵活性与兼容性,二、C#的运行模型,目前用高级语言编写的程序有两种形式,一种是被编译成机器语言在CPU上执行,如VisualC+,Pascal等。另外一种是边解释边执行的,称为解释性语言,如VisualFoxFro,VisualBsasic3.0等。,三、C#的运行模型,中间语言(IntermediateLanguage,IL)中间语言是一种与硬件平台无关的指令集(InstructionSet)使得C#编写的程序可以在任何支持.Net的系统上运行.,操作系统,.NET环境,C#代码,CSC.exe,IL文件,OSLoader,类加载器,程序内存映象,JIT编译器,可执行代码,类库文件,安全性检查,Cpu执行,本章小节,本章对Microsoft.Net平台和C#语言进行了简要的介绍,通过本章学习,读者可以学习到.Net构建理念和组成,C#语言特点和运行模型等内容。学习完本章,应该重点掌握以下内容:,Microsoft.Net由构造和管理新一代服务的基本结构和工具、创建互联网操作系统的构建块、能够启用新型智能互联网设备的.Net设备软件和.Net用户体验,四部分构成,其中.NetFramework是.Net平台的基础,它消除了各类编程框架之间的差异,实现了跨语言编程的能力。C#语言具有简洁的语法、面向对象、与Web的紧密结合、安全性和错误处理等特点。,C#程序并不是一次编译后执行的,而是先编译成中间代码,然后在.Net环境由JIT编译器边编译边运行的,这样实现的最大好处是消除了编程语言的差异,节约了系统资源。.Net平台带来的新概念:中间代码、运行时编译、元数据、垃圾回收器。,第二章.VisualStudio.Net集成开发环境,本章内容:,VisualStudio.Net集成开发环境的安装VisualStudio.Net集成开发环境介绍.Net集成开发环境上C#程序开发,本章内容:,本章主要介绍C#程序集成开发环境VisualStudio.NET的安装方法,IDE中窗口、选项和帮助的内容,以及在VisualStudio.NET上进行C#程序开发的一般原则。,2.1VisualStudio.Net集成开发环境的安装,为了确保安装成功,应该在安装VisualStudio.Net之前完成以下任务:确保硬件满足最低要求。确保操作系统满足安装要求。获取和VisualStudio.Net有关的组件,一、硬件和系统需求,在安装VisualStudio.Net之前,要确保计算机满足以下的最小硬件需求:奔腾II系列,450MHZ,推荐使用奔腾III733MHZ以上配置内存128MB,推荐使用256MB以上配置800600,256色显示器以上配置一个CD-ROM驱动器操作系统:Windows98,WindowsNT4.0,MicrosoftWindows2000,WindowsXP,WindowsServer2003,二、安装必要的组件,在安装VisualStudio.Net之前,需要在系统上安装必要的Windows组件,主要包括:WindowsNT4.0ServicePack6aWindows2000ServicePack2MicrosoftWindowsInstaller2.0MicrosoftWindowsManagementInfrastructureMicrosoftFrontPage2000WebExtensionsClient,以上组件并不一定都要安装,具体要安装的组件要根据操作系统的情况来定,最简单的方式是使用MicrosoftWindowsComponentUpdate光盘(即VisualStudio.NetCD3)进行组件的安装:,1)将MicrosoftWindowsComponentUpdate光盘放入光驱,如果光盘不能自动播放,则在光盘中查找Setup.exe,双击运行即可显示图2-1的界面。,图2-1安装程序,2)信息装载完毕后,就会弹出对话框中显示安装的各种组件,如图2-2所示,有时会弹出一个警告对话框提示你使用CD1安装,这时点击“否”按钮。,图2-2组件安装对话框,3)点击“立即安装!”,开始安装相应的组件。4)安装完毕后,点击“完成”,如图2-3所示,就完成了相关组件的安装工作。,图2-3组件安装结束界面,VisualStudio.NET的安装程序存放在CD1和CD2盘上,用户可以使用光盘安装也可以将CD1和CD2盘上的内容合并拷贝到硬盘上安装,我们以光盘安装介绍其安装过程。,三、在WindowsXP平台上安装VisualStudio.Net,1)将CD1放入光驱,程序会自动运行,弹出系统检测对话框,检测过后会弹出选择安装VisualStudio.NET对话框,如图2-4所示。,图2-4VisualStudio.NET安装程序,2)选择“2现在即可安装VisualStudio.NET”,系统进而安装初始化。3)系统初始化完成之后,弹出安装界面,选择“同意”,点击“继续”进入安装程序选择页,如图2-5所示。,图2-5安装程序选择页,4)根据图2-5所示,在“功能属性”栏中为VisualStudio.Net选择安装目录,同时在左栏中的“选择要安装的项”下,选择要安装的组件,然后点击“立即安装!”,进行安装过程,如图2-6所示。,图2-6安装过程5,5)在安装过程中,系统会提示更换安装盘CD2,这时将CD2安装盘插入光驱,继续安装,当安装完成后出现图2-6所示界面,点击右下角的“完成”标签。,图2-6安装完成界面,6)至此,安装结束。界面会返回到初试安装界面图2-4,此时图标3(产品文档)项为选中状态,用户可以选择3安装MSDN库,或者选择“退出”以后安装该文档库。,一、启动VisualStudio.Net集成开发环境,2.2VisualStudio.Net集成开发环境介绍,在成功安装VisualStudio.Net之后,在“开始”菜单中“所有程序”项中选择“MicrosoftVisualStudio.Net2003”,即可启动VisualStudio.Net集成开发环境,如图2-7所示。,图2-7启动VisualStudio.Net,这时屏幕上会出现启动画面如图2-8所示,从画面上可以看出VisualStudio.Net开发环境中目前包含的产品。,图2-8启动界面图,启动界面消失后就正式进入了VisualStudio.Net集成开发环境,首次运行会显示【起始页】如图2-9所示,该页包含【项目】、【联机资源】、【我的配置文件】三个可选页。,图2-8VisualStudio.Net的【起始页】,【项目】页中显示了最近一段时间内打开过的项目,以方便用户查找,由于第一次进入所以没有项目显示。该页上还有两按钮:【新建项目】和【打开项目】。点击【新建项目】会弹出【新建项目】对话框,从中可以创建C#项目。【联机资源】页显示了VisualStudio.Net的新特性如图2-9所示,【新增功能】部分显示了VisualStudio.Net的新特性,包括下载示例代码和新的编程工具。,图2-9【联机资源】栏,二、VisualStudio.Net的窗口,VisualStudio.Net向用户提供了浏览文件和自定义控件的窗口。本节将讨论开发C#应用程序必须的窗口。可通过位于菜单栏下面、工具栏右部的一些工具栏图标访问这些窗口如图2-10所示,或者从【视图】菜单中选择所需窗口的名称来访问它。,1【解决方案资源管理器】窗口,【解决方案资源管理器】窗口列出了所有解决方案中的文件,当创建一个新项目或者现存的项目被打开时,【解决方案资源管理器】窗口将显示这个项目的内容。图2-11显示了打开一个C#项目时【解决方案资源管理器】窗口的内容。,2【属性】窗口,【属性】窗口用于操纵一个窗体或者控件的属性如图2-12所示。属性定义了控件的信息,例如大小、颜色、字体等,每个控件都有自己的一组属性。当选中某个属性时,【属性】窗口下方会显示该属性的描述。,3【工具栏】窗口,【工具栏】窗口如图2-13所示,包含了可重用的组件或者控件,用于自定义应用程序。用户在编程时可以在窗体中“拖放”已有的控件,省去了自己编写代码的麻烦。这种方法是目前可视化编程中最常用的技术,通过组件或者控件,用户可以很快编写出需要的应用程序,从而满足了软件的快速开发要求。,三、VisualStudio.Net的菜单,VisualStudio.Net的菜单主要包括:【文件】菜单组、【编辑】菜单组、【视图】菜单组、【项目】菜单组、【生成】菜单组、【调试】菜单组、【工具】菜单组和【窗口】菜单组。下面将一一介绍这些菜单组的内容和使用方法。,1【文件】菜单组,文件菜单组主要包括了与文件相关的操作命令,用户单击VisualStudio.Net集成开发环境中的【文件】菜单会弹出如图2-14所示的菜单栏,主要包括以下命令:,1)【新建】【新建】主要实现两个子命令:【项目】和【文件】,如图2-15。选择【项目】命令,将会弹出【新建项目】对话框,通过该对话框我们可以创建C#工程。选择【文件】命令,将出现【新建文件】对话框,通过该对话框可以创建不同类型的文件。图2-14【文件】菜单组,图2-14【文件】菜单组,图2-15【新建】子菜单,图2-15【打开】子菜单,2)【打开】【打开】菜单包括四个子菜单:【项目】、【Web上的项目】、【文件】、【来自Web的文件】,如图2-15所示。,3)【关闭】该命令用于关闭打开的文件,有以下三种执行方式:若当前没有文件打开,该命令不可用若当前打开文件没有被保存或者已经被修改,则在选择该命令后,弹出一个消息对话框,询问是否保存当前文件内容。如果有多个文件处于打开状态,选择该命令只能关闭当前活动的文件。,4)【添加项目】该子菜单包含三个命令:【新建项目】、【现有项目】和【Web上的项目】。、5)【保存】该命令用于保存当前活动窗口文件内容,该命令有两种执行方式:若当前文件处于打开状态,则该命令不可用若当前文件为新建文件,则该命令将激活【另存为】对话框,如图2-16所示。,6)【另存为】该命令用于保存一个新建的窗口或者当前编辑的窗口内容到不同的文件去,选择该命令将弹出【另存为】对话框,通过该对话框你可以指定要保存文件的位置。如果当前没有文件处于打开状态,该命令为不可用状态。,图2-16【另存为】对话框,7)【全部保存】该命令用于保存当前打开的所有文件。8)【源代码管理】该子菜单包含了软件工程中代码管理的几个主要内容。9)【页面设置】该命令主要用于设置打印选项。10)【打印】该命令完成文件的打印工作。,11)【最近的文件】该菜单包含最近打开的文件,最多可以列出4个文件名,这些文件名列表为该对应文件的快捷打开方式,选择其中一个文件名,就能打开该文件。12)【最近的项目】该菜单包含最近打开的项目名,最多可以列出4个项目名。13)【退出】通过该命令,能退出VisualStudio.Net集成开发环境,如果当前工程有没有保存的文件,将弹出警告框。,2【编辑】菜单组,【编辑】菜单组如图2-17所示,为用户提供了文件编辑命令,主要包括:1)【撤销】该命令用于恢复用户最近一次的编辑,图2-17【编辑】菜单组,2)【重复】该命令用于恢复被【撤销】的操纵。其快捷键为Ctrl+Z。3)【剪切】将当前活动窗口选中的内容剪切到剪切板中。4)【复制】将当前活动窗口选中的内容复制到剪切板中。,5)【粘贴】将剪切板中内容拷贝到当前光标所在的位置,如果当前有选中的部分,则用剪切板中的内容替代当前选中部分。6)【循环应用剪贴板中的复制项】循环替代剪切板中当前活动内容。7)【删除】将当前活动窗口中选定的内容删除。,8)【全选】将当前活动窗口中的内容全部选中。快捷键Ctrl+A。9)【查找和替换】该子菜单包括五个命令:查找、替换、在文件中查找、在文件中替换和查找字符。提供这些命令,可以在当前活动文档,或者指定文件中寻找或者替代指定的内容或字符。10)【转到】将光标快速移动到当前活动窗口中指定位置。,11)【将文件作为文本插入】选择该命令将弹出打开文件对话框,如图2-18所示,并所选定的文件内容插入到当前光标所在位置。,图2-18【插入文件】对话框,12)【高级】该子菜单项包含了用于进行高级查找、选择和文本处理操作的命令。13)【书签】该子菜单项包含了用于文件书签管理的命令。14)【大纲显示】该子菜单包含了用于管理视图大纲。15)【智能感知】该子菜单包含了列出成员、参数信息、完成单词等智能化操纵。,3【视图】菜单组,【视图】菜单组如图2-19所示,主要用于VisualStudio.Net集成开发环境中的窗口显示,主要包括:1)【代码】该命令用于显示窗体对于的代码。2)【设计器】该命令用于显示窗体的设计模式。3)【打开】该命令用于打开当前方案管理器、类视图等项中的条目。,4)【打开方式】该命令用于设置出来文件的编辑器种类。,图2-19【视图】菜单组,图2-20【显示任务】子窗口,5)【解决方案资源管理器】该命令用于显示解决方案资源管理器窗口。6)【类视图】该命令用于显示类视图窗口。7)【服务资源管理器】该命令用于显示服务资源管理器窗口。8)【资源视图】该命令用于显示资源视图窗口。9)【属性窗口】该命令用于显示属性窗口。,10)【对象浏览器】该命令用于显示对象浏览器窗口。11)【工具箱】该命令用于显示工具箱窗口。12)【Web浏览器】该命令用于在IDE环境中实现IE功能。13)【其他窗口】该命令用于显示诸如文档大纲窗口、输出窗口和输出窗口等窗口内容。14)【显示任务】该命令用于管理任务清单中的显示内容如图2-20所示。,15)【工具栏】该命令用于指定将在屏幕上显示的工具栏。16)【全屏】通过该命令,可以选择当前活动窗口以全屏方式显示,当处于全屏方式显示时,可以通过单击Esc键切换会原理的显示方式。17)【向前定位】该命令相当于“前进”按钮,选择该命令,可以前进到上一个打开的窗口中。,18)【向后定位】该命令相当于“后退”按钮,选择该命令,可以后进到上一个打开的窗口中。19)【属性页】通过该命令,将会弹出属性页对话框,通过该对话框,可以设置对象的属性。,4【项目】菜单组,【项目】菜单组主要包含于项目有关的操纵和命令,如图2-22所示,包含以下命令:图2-22【项目】菜单组1)【添加Windows窗体】通过该命令,将会弹出【添加新项】对话框,通过该对话框可以向当前工程中添加Windows窗口。2)【添加继承窗体】通过该命令,将会弹出【添加新项】对话框,通过该对话框中的【继承的窗体】项可以添加继承窗体。,3)【添加用户控件】通过该命令,将会弹出【添加新项】对话框,通过该对话框中的【用户控件】项可以添加用户控件。4)【添加继承的控件】通过该命令,将会弹出【添加新项】对话框,通过该对话框中的【继承的用户控件】项可以添加继承的用户控件。5)【添加组件】通过该命令,将会弹出【添加新项】对话框,通过该对话框中的【组件类】项可以添加组件,确认后就可以从工具箱或服务器管理器中选择合适的组件拖动到设计器中。,6)【添加类】通过该命令,将会弹出【添加新项】对话框,通过该对话框中的【类】项可以添加类。7)【添加新项】通过该命令,将会弹出【添加新项】对话框,通过该对话框中的【项目】项可以添加继承窗体。8)【添加现有项】通过该命令将出现【条目选择】对话框,通过该对话框,可以选择将要添加的条目。9)【添加引用】选择该命令将出现【添加引用】对话框,通过该对话框,可以选择将要添加所需要的引用。,10)【添加Web引用】选择该命令将出现【添加Web引用】对话框,通过该对话框,可以选择寻找网页上的引用。11)【设为启动项目】该命令将当前工程设置为启动工程,这样每次启动VisualC#.Net时自动地加载该项目。,5【生成】菜单组,图2-21【生成】菜单组【生成】菜单组包含与编译、链接有关的命令,如图2-22所示,主要包括:1)【生成】该命令编译和链接工程中所有被修改过的文件,并将警告信息和错误信息输出到输出对话框中。2)【重新生成】该命令重新编译和链接当前工程。3)【批生成】选择该命令将出现【批生成】对话框,如图2-23所示,使用该对话框可以建立多个工程的编译配置。,图2-21【生成】菜单组,图2-23【批生成】对话框,图2-24【配置管理器】对话框,4)【配置管理器】选择该命令将出现【配置管理器】对话框,如图2-24所示。使用该对话框可以建立多个工程的编译配置。,6【调试】菜单组,【调试】菜单组主要包括于程序调试有关的命令,如图2-25所示,主要包括以下命令:图2-25【调试】菜单组,图2-25【调试】菜单组,1)【窗口】【窗口】子菜单主要用于显示断点、异常和命令窗口。2)【启动】编译运行当前工程。3)【开始执行】在无调试模式下编译并运行当前工程。4)【进程】显示当前系统中存在的进程。5)【异常】当选择该命令时,会显示【异常】对话框,该对话框显示系统能够捕获的所有异常类型。,6)【逐语句】单步运行程序,按照语句为单位运行。7)【逐过程】按照过程或者函数作为运行单位,遇到函数不跳入执行。8)【新断点】选择该命令后,会在鼠标所在行加入断点。9)【清除所有断点】选择该命令可清除所有设置过的断点信息。,7【工具】菜单组,【工具】菜单组如图2-26所示,主要包括以下命令:1)【拼写检查】图2-26【工具】菜单组用于链接外部的拼写检查程序对项目进行拼写检查。2)【调试进程】选择该命令后,会显示【进程】对话框,该对话框显示本机所有可能进程。3)【连接到设备】用于连接外部设备。,4)【连接到数据库】选择该命令将出现【数据连接属性】对话框,通过该对话框可以连接到数据库。5)【外部程序管理器】选择该命令还会出现【外部程序管理器】对话框,该对话框会显示当前可用的外部程序。6)【生成注释Web页】为当前工程构造注释网页。7)【宏】可以管理和录制宏。8)【创建GUID】生成GUID编号的工具。,9)【ATL/MFC跟踪工具】设置ATL/MFC的跟踪行为。10)【OLE/COM对象察看器】提供安装在系统上的所有OLE和COM对象的信息。11)【Spy+】提供观察Windows操纵细节的方法,允许用户观察所有的过程线程、窗口和Windows发送的消息。12)【外部工具】用于选择VisualStudio.Net继承开发环境中使用的外部工具。,13)【自定义】选择该命令,会显示【自定义】对话框,用户可以提供这个对话框定制命令、工具栏、菜单和快捷键。14)【选项】选择该命令将会弹出【选项】对话框,在该对话框中可以设置系统的行为。,8【窗口】菜单组,【窗口】菜单组包含用于操纵窗口的命令,如图2-27所示,主要包括:1)【新建窗口】打开和当前活动窗口包含相同文档的另一个窗口,并成为当前活动窗口,两个窗口的内容保持同步编号。2)【拆分】图2-27【窗口】菜单组将当前窗口拆分成多个窗格,这个可以方便地查看同一个文档的不同部分。,3)【可停靠】允许/禁止当前活动窗口的停靠特征。4)【隐藏】隐藏当前活动的窗口。5)【浮动】允许/禁止当前活动窗口的浮动特征。6)【自动全部隐藏】允许/禁止全部窗口的浮动特征。7)【关闭所有文档】如果项目中有没有保存的文件,系统会显示提示信息。8)【窗口】列出最近打开的窗口文件名,最多可以列出10个。,2.3Net集成开发环境上C#程序开发,C#应用程序的创建1)创建新项目,2.3Net集成开发环境上C#程序开发,C#应用程序的创建2)添加代码,2.3Net集成开发环境上C#程序开发,C#应用程序的创建3)运行程序保存项目,2.3Net集成开发环境上C#程序开发,C#程序的典型布局1usingSystem;2namespaceASimpleProject34/5/Class1的摘要说明。6/7classClass189/10/应用程序的主入口点。12/13STAThread14staticvoidMain(stringargs)1516/17/TODO:在此处添加代码以启动应用程序18/19Console.WriteLine(HelloWorld!);202122,本章小结,VisualStudio.Net集成开发环境是微软提供的,用于创建、运行和调试各种.NET编程语言的程序。本章我们主要介绍了该集成开发环境的安装方法,以及它提供的窗口和菜单的各个功能,最后我们使用该集成开发环境创建了一个典型的C#应用程序,并介绍了进行C#开发的一般步骤和典型布局。,第3章C#的基本语法,本章内容,C#的基本语法,C#的词法结构数据类型表达式操作符,3.1词法结构,词法是构成程序设计语言的最基本单位,程序是由若干个语句构成,而语句是由若干个具有特殊含义的单词和运算符构成的,所以学习一门新语言,首先应该从词法入手。,3.1.1标识符,标识符(identifier)是程序开发人员为类型、方法、变量等所选择的名字。C#的标识符应当使用字母或下划线作为开头,由字母、数字、下划线(_)和美元符号($)组成,不能包括空格、标点符号和运算符,而且标识符的名称最好和实际的应用联系起来,这样可以使程序更容易理解.下面列出了合法的标识符:Sum,average,_total,Student_name,tan$,Lotus_1_2_3下面列出了不合法的标识符:A.B,ab,!wait,#33.bc,3.1.1标识符,C#的标识符区别大小写,这和C/C+语言是一样的,例如下面的三个标识符是不同的。MembermemberMemBerC#的标识符不能与关键字相同,但是可以使用前缀来避免这种冲突,例如:whilewhile上面两个单词中第一个单词是合法的标识符,而第二个单词不是合法标识符,因为while是个关键字。,3.1.2关键字,同C和C+语言一样,C#也规定了很多关键字用于程序控制、数据说明或者其它功能,由于它们的特殊意义,所以这些关键字不能作为标识符使用,3.2数据类型,C#的数据类型采用了类似于C和C+语言的数据类型描述形式,但又有所改进。C#将所有的数据类型分成两大类:值类型引用类型。,3.2.1值类型,值类型通常用来表示基本类型、简单类型。C#的值类型主要包括:整数类型布尔类型实数类型字符类型结构类型枚举类型,整数类型,C#定义了8种整数类型:短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong)。划分的依据是根据这些类型所占存储器的位数。,布尔类型,布尔类型用来表示“真”和“假”两个逻辑概念.在C和C+语言中,用0来表示“假”,用非“0”的值表示“真”,但是C#语言中对上述表示进行的限制,C#中布尔类型只能取“真”和“假”两个值,分别用true和false两个关键字来表示boolx1;/错误,不存在这种写法;boolxtrue;/正确,实数类型,C#采用两种数据类型来表示小数:单精度(float)和双精度(double),两者的差异主要取决于取值范围和精度。,字符类型,C#提供字符(char)处理ASCII字符和Unicode编码的字符,ASCII字符是美国标准委员会提供的,采用7位二进制表示的字符。Unicode是国际标准化组织制定的采用16位二进制表示的字符,它可以表示世界上大多数语言。,结构类型,有时需要将不同类型的数据组合成一个有机的整体以便使用,例如要编制一个学生信息管理系统,对全校学生的信息进行管理,一个学生具有学号、姓名、性别、年龄、地址等信息,如果使用简单数据类型分布存储这些信息的话,很难完成反映出这些信息的内在联系,所以应该将它们组织成一个整体。C#语言提供了结构类型(structure),允许用户根据实际的需要实现特定的数据类型,结构类型,例如学生信息管理,我们必须将一个学生的学号、姓名、性别、年龄、地址信息组合成一个新的数据类型,我们可以采用如下形式:structStudentpublicintNo;/记录学号信息publicstringName;/记录学生姓名publiccharsex;/学生性别publicintAge;/学生年龄publicstringAddr;/学生的地址Students;,枚举类型,在程序设计中,有时会用到由若干个有限数据元素组成的集合,可将这些数据集合定义为枚举类型(enum)。枚举类型定义的一般形式为:enum枚举名枚举值表;在枚举值表中应罗列出所有可用值,这些值也称为枚举元素。,枚举类型,enumWeekdaysun,mon,tue,wed,thu,fri,sat;该枚举名为Weekday,枚举值共有7个,即一周中的七天。按照系统默认,枚举中的每个元素的类型都是整型类型,且第1个元素的值为0,后面的元素按照加1递增。当然也可以给元素之间赋值,例如:enumWeekdaysun=1,mon=4,tue,wed,thu,fri,sat;这样sun的值为1,mon的值为4,tue的值为5,以后值按照加1递增。,3.2.2引用类型,引用类型,其含义是该类型的变量不直接存储所包含的值,而是指向它所要存储的值.在C#中提供以下引用类型给你使用:类类型字符串类型数组类型代表类型接口类型,类类型,类是面向对象编程的基本单位,它是一种包含数据成员,函数成员和嵌套类型的数据结构。类的数据成员有常量,域和事件,函数成员包括方法,属性,索引指示器,运算符,构造函数和析构函数,有关类的深入讲述我们放在第6章介绍。,字符串类型,在C#中有一个用于操作字符串数据的基本字符串类型,字符串类直接派生自对象,且它是被密封的,这意味着再不能从它派生类。就象其它类型,字符串是预定义类SystemString的一个别名。它的用法十分简单:stringmyString=sometext;,数组,同C语言一样,C#语言中也有数组类型,但是与C语言中数组概念相比有了很大扩展。一个数组包含有通过计算下标访问的变量,所有包含于数组中且被当作元素的变量必须是同一类型。这种类型自然被称为数组类型。,数组,让我们看一下用一个数组初始化器初始化的数组:stringarrLanguages=C,C+,C#;该简写效果等同以下:arrLanguages0=C;arrLanguages1=C+;arrLanguages2=C#;,接口类型,一个接口是一个只有抽象成员的引用类型。C#中的接口只有方法名,但这些方法没有执行代码。下面我们定义一个接口IFace,它只有一个方法:interfaceIFacevoidShowMyFace();,委托类型,C#中的委托类型和C/C+中的函数指针非常相似,C#中的委托类型有一个特性就是不需要知道被引用的方法属于那一个类对象,只要函数的参数个数与返回值与委托类型对象中的一致就可以了。定义一个委托类型,该类型名为MyDelegate:delegatestringMyDelegate();,委托类型,下面定义一个类MyClass,该类中包含一个名为SayHello的方法,请注意,该方法与我们上面声明的委托类型具有相同的参数个数和返回值。publicclassMyClasspublicstringSayHello()returnHellotheworld!;,委托类型,我们定义一个测试类TestMyClasspublicclassTestMyClasspublicstaticvoidMain(stringargs)MyClassmyClass1=newMyClass();MyDelegatemyDelegate1=newMyDelegate(myClass1.SayHello);/下面就使用myDelegate1代替对象myClass1的SayHello方法System.Console.WriteLine(myDelegate1();/输出结果为hellotheworld!与调用myClass1.SayHello();效果相同,3.2.3装箱和拆箱,装箱和拆箱是C#类型系统的核心概念。通过允许一个值类型转换成引用类型对象或从引用类型对象转换成值类型,这种机制形成了值类型和引用类型之间的捆绑连接。装箱转换给一个值装箱是指隐式地把任何值类型转换成类型对象。当一个值类型被装箱时,一个对象实例就被分配,且值类型的值被拷贝给新的对象。intnvalue=2000;objectobj=nvalve;,3.2.3装箱和拆箱,拆箱转换和装箱相比,拆箱操作是显式操作你必须告诉编译器,想从对象中抽取出哪一种值类型。当执行拆箱操作时,C#编译器检测所请求的值类型实际上存储在对象实例中。经过成功的确认,该值才能被拆箱。下面我们举例说明如何进行拆箱操作:intnvalue=2000;objectobj=nvalve;intnret=(int)obj;上例中,我们定义了一个整形的变量、一个对象变量,然后我们将对象变量显式转换为整形,并赋值给整形变量nret。,3.3变量和常量,变量在计算机中变量代表存储地址,而变量的类型决定了存储在变量中的数值的类型。变量的命名原则应该复合标识符的命名规则,在命名时应给出具有描述性质的名称,这样写出来的程序便于理解。常量带有const修饰符声明的变量称为常量,常量就是其值固定不变的量constintx=10;,3.3变量和常量,下面的例子说明了各个变量的不同类型:classApublicstaticintx;inty;voidF(intv,inta,refintb,outintc)inti=1;c=a+b+;在上面的变量声明中,x是静态变量,y是非静态变量,v0是数组元素,a是值参数,b是引用参数,c是输出参数,而i是局部变量,3.3变量和常量,静态变量带有static修饰符声明的变量称为静态变量。静态变量的生存期是从被装载起,至到包含了这个变量的程序运行结束为止。非静态变量不带有static修饰符声明的变量称为实例变量数组元素局部变量局部变量是指在一个独立的程序块中声明的变量,局部变量的生存周期只在该范围中有效,当程序运行到这一范围时,该变量即开始生效,程序离开时变量就失效了。,3.4运算符和表达式,C#语言中的运算符和表达式,继承了C语言的运算符和表达式语言功能,从而使开发人员能够很快的从C语言开发转移到C#语言开发中来。,3.4.1运算符的分类和优先级,依照操作符作用的操作数个数来分,可以将C#中操作符分成以下三类:一元操作符一元操作符作用于一个操作数,按照其所处操作数的位置,有可以分为前缀操作符和后缀操作符。例如:!a、-x;/前缀操作符x+、x-;/后缀操作符二元操作符二元操作符作用于两位操作数,使用时在操作数中间插入操作,例如:z=x+y、z=x%y;三元操作符C#中仅有一个三元操作符”?:“三元操作符作用于三个操作数,使用时在操作数中间插入操作符,例如:a=(bc?1:0),3.4.2算术操作符和算术表达式,算术运算符是进行算术运算的操作符,它实现了数学上基本的算术运算功能,这些运算符包括:加法运算符减法运算符乘法运算符除法运算符取模运算符“/”操作符用来求除法的商,而“%”操作符则用来求除法的余数,3.4.3赋值操作符和赋值表达式,赋值就是给一个变量赋一个新值,C#中提供的赋值表达式有:=、+=、-=、*=、/=、%=、/等于x=x*(y+1),3.4.4关系操作符和关系表达式,关系运算实际上是逻辑运算的一种,我们可以把它理解为一种判断,判断的结果总是布尔值。C#中关系操作符主要包括:比较操作符is操作符as操作符。,3.4.4关系操作符和关系表达式,比较操作符C#中定义的比较操作符有:等于操作符(=)、不等于操作符(!=)、小于操作符()、小于等于操作符(=)is操作符is操作符被用于动态地检查运行时对象类型是否和给定的类型兼容,运算“eisT”的表达式,其中e是一个表达式,T是一个类型,该运算返回值是一个布尔值,它表示e是否能通过引用转换、装箱转换或拆箱转换,成功地转换于T类型。,3.4.4关系操作符和关系表达式,as操作符as操作符用于通过引用转换或装箱转换,将一个值显式地转换成指定的引用类型。它与像显式类型转换,不会产生任何异常。如果转换不能进行,那么结果值为null。关系表达式用关系操作符将两个表达式连接起来的式子就是关系表达式。关系表达式的值就是关系操作符的返回值,即一个布尔值关系表达式可以再作为关系操作符的操作数,也可以作为布尔值赋给赋值表达式,,3.4.5逻辑操作符和逻辑表达式,C#语言提供了四种逻辑操作符:逻辑与(上面四个表达式的输出分别是:Int32、Iint32、string、doublechecked和unchecked操作符checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查,本章小节,本章我们介绍C#的基本语法,包括词法结构、数据类型,常量和变量以及运算符和表达式。C#数据类型主要包括:值类型和引用类型。C#语言为我们提供了丰富的操作符和表达式,用于各种情况下对数据的运算和处理。,第4章C#语句,本章内容,C#程序的执行是由一系列按照文本顺序执行的语句进行的,C#的常用语句包括:基本语句条件语句循环语句跳转语句异常处理语句。,4.1C#的基本语句,块语句块语句把一系列语句包装成一个语句,块语句的一般格式如下:一个或者多个语句;空语句空语句是一种最简单的语句,它不实现任何功能,C#中空语句的形式如下:;,4.1C#的基本语句,标签语句C#程序允许在一条语句前面使用标签前缀,这种语句类似于汇编语句,其形式如下:标签名称:语句用标签语句主要为配合goto语句完成程序的跳转功能,例如:if(x=0)gotolarge;x=-x;large:returnx;,4.1C#的基本语句,声明语句声明语句主要完成对一个常量或者变量的声明,声明一个变量的语法结构如下:类型变量=表达式;表达式语句表达式语句由表达式加上分号“;”组成。其一般形式为:表达式;,4.2选择语句,当程序中需要进行两个或两个以上的选择时,可以根据条件判断来选择将要执行的一组语句。C#提供的选择语句有:if语句if(布尔表达式)语句块;switch语句switch(控制表达式)case常量表达式:语句块;default:语句块;,4.3循环语句,C#提供了四种不同的循环机制:for循环语句foreach循环语句while循环语句do-while循环语句,4.3.1for循环语句,其语法如下:for(初始化语句;条件判断语句;迭代语句)语句块;for(inti=0;i100;i+)Console.WriteLine(i);,4.3.2foreach循环语句,语句的格式为:foreach(类型标识符in表达式)语句块;intA=1,2,3;foreach(inttempinA)Console.WriteLine(temp);,4.3.3while循环语句,与for循环一样,while也是一个预测试的循环。如果其测试条件的值等于false,while循环就不会执行,其语法是类似的,但是while循环只有一个表达式:while(循环测试条件)语句块;,4.3.4do-while语句,do-while语句与while语句不同的是它将内嵌语句执行一次至少一次或若干次:do语句块;while(循环测试条件),4.4跳转语句,C#提供了许多可以立即跳转到程序中另一行代码的语句,这些跳转语句包括:goto语句break语句continue语句return语句。,4.4.1goto语句,goto语句可以直接跳转到程序中标签语句中,例如:gotolable1:Console.WriteLine(“Thiswontbeexecuted”);lable1:Console.WriteLine(“Continuingexecutionformhere”);,4.4.2break语句,break语句可以用于for、foreach、while和dowhile循环,它提前结束循环操作,立即执行后面的语句如果break语句放在嵌套循环中,它只能跳出一层循环操作,而不是跳出整个嵌套循环操作,例如:for(inti=0;i10;+i)for(intj=0;j10;+j)if(j=5)break;,4.4.3continue语句,ontinue语句类似于break语句,它也适用于for、foreach、while或dowhile循环语句中,但是与break语句不同,它只从循环的当迭代是前迭代中退出,然后在循环的下一次迭代开始重新执行,而不是退出循环,例如:for(inti=0;iy)returnx;elsereturny;publicvoidMain()Console.WriteLine(“themaxof6and8is:0”,max(6,8);程序的输出是themaxof6and8is:8,5.3方法中的参数,C#中方法的参数有四种类型,它们分别是:值参数值参数不含任何修饰符引用参数以ref修饰符声明引用型参数输出参数以out修饰符声明输出参数数组参数。以params修饰符声明数组型参数,5.3.1值参数,当利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并且将此拷贝传递给该方法。被调用的方法不会修改内存中实参的值,所以使用值参数时,可以保证实际值是安全的。,5.3.1值参数,下面这个方法试图完成将两个数值进行交换:staticvoidSwap(intx,inty)inttemp=x;x=y;y=temp;,5.3.1值参数,下面我们调用该函数完成两个数的交换:staticvoidMain()inti=1,j=2;Swap(i,j);Console.WriteLine(i=0,j=1,i,j);上面调用的输出结果是:i=1,j=2,5.3.1值参数,分析:出现这种结果的原因是,Swap方法的参数是使用的值传递方式,上面我们强调了值参数在传递时,编译器会生成一份拷贝,所以Swap交换的实际上是拷贝的值,而不是实参的值,5.3.2引用参数,从上面例子中,我们知道值参数无法完成数值交换,如果要完成数据交换,必须在方法调用传入实参本身,而非实参的拷贝。C#为我们提供了另外一种参数传递方式,这就是引用参数,和值参不同的是引用型参数并不开辟新的内存区域,当利用引用型参数向方法传递形参时,编译程序将把实际值在内存中的地址传递给方法。,5.3.2引用参数,下面我们还是以交换两个数值的例子来讲解引用参数的使用。staticvoidSwap(refintx,refinty)inttemp=x;x=y;y=temp;,5.3.2引用参数,因此我们在调用Swap时需要如下调用:staticvoidMain()inti=1,j=2;Swap(refi,refj);Console.WriteLine(i=0,j=1,i,j);这次函数输出结果为:i=2,j=1,5.3.3输出参数,与引用型参数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国激光项目创业计划书
- 中国口腔种植耗材项目创业计划书
- 中国APE项目创业计划书
- 中国仁用杏深加工项目创业计划书
- 中国金银花种植项目创业计划书
- 中国计算机辅助制造(CAM)软件项目创业计划书
- 中国光声成像系统项目创业计划书
- 中国内容分发网络项目创业计划书
- 数据驱动的资源分析与预测-洞察阐释
- 安全教育应聘试题及答案
- 2025届浙江省杭州市建兰中学八年级英语第二学期期末综合测试试题含答案
- 小麦收割合同协议书模板
- 商铺退押金协议书
- 广东省惠州市惠阳区2023-2024学年一年级下学期语文期末随堂练习试卷(含答案)
- 冷链物流配送中心建设项目可行性研究报告
- 起重吊装作业安全与操作规范培训
- 2025辽宁沈阳副食集团所属企业招聘25人笔试参考题库附带答案详解
- 2023电气装置安装工程 旋转电机施工及验收规范
- 第六单元 年、月、日 单元测试(含答案)2024-2025学年三年级下册数学人教版
- 2025-2030中国工业铰接式机器人行业市场发展趋势与前景展望战略研究报告
- 国家开放大学2025年《机电控制工程基础》形考任务1-4答案
评论
0/150
提交评论