![ASP[1].net从入门到实践.ppt_第1页](http://file1.renrendoc.com/fileroot2/2020-1/10/a7335184-5eb9-450e-9622-fe08c4d4569e/a7335184-5eb9-450e-9622-fe08c4d4569e1.gif)
![ASP[1].net从入门到实践.ppt_第2页](http://file1.renrendoc.com/fileroot2/2020-1/10/a7335184-5eb9-450e-9622-fe08c4d4569e/a7335184-5eb9-450e-9622-fe08c4d4569e2.gif)
![ASP[1].net从入门到实践.ppt_第3页](http://file1.renrendoc.com/fileroot2/2020-1/10/a7335184-5eb9-450e-9622-fe08c4d4569e/a7335184-5eb9-450e-9622-fe08c4d4569e3.gif)
![ASP[1].net从入门到实践.ppt_第4页](http://file1.renrendoc.com/fileroot2/2020-1/10/a7335184-5eb9-450e-9622-fe08c4d4569e/a7335184-5eb9-450e-9622-fe08c4d4569e4.gif)
![ASP[1].net从入门到实践.ppt_第5页](http://file1.renrendoc.com/fileroot2/2020-1/10/a7335184-5eb9-450e-9622-fe08c4d4569e/a7335184-5eb9-450e-9622-fe08c4d4569e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 ASP.NET 3.5入门基础,.NET Framework是一个支持构建、部署和运行下一代应用程序和Web服务的完整Windows组件。ASP.NET是.NET Framework的一部分。它是一个统一的Web开发模型,包括创建企业级Web应用程序的所必需的各种服务。本章将讲解ASP.NET 3.5的入门知识,主要介绍以下知识点 网页和网站。 .NET Framework概述。 ASP.NET概述。 搭建ASP.NET网站开发环境。 创建第一个ASP.NET网站Sample_01。,1.1 网页和网站,随着网络技术的发展,网站的应用范围越来越广。网页是网站不可缺少的元素,虽然网页的样
2、式可以多种多样、实现的技术互不相同,但是这些网页可以分为静态网页和动态网页。,1.1.1 静态网页,通常,称只包括HTML元素的网页为静态网页。如果要修改该网页,可以使用专门的网页制作工具来实现,如Dreamweaver、Frontpage等。静态网页的内容和外观总是保持不变的,而且一般不需要与服务器发生交互动作。静态网页的后缀名一般为“.htm”、“.html”、“.shtml”、“.xml”等。 如果把page.htm网页放置在服务器上,用户可以通过给定的网址来访问该网页。同样,用户也可以双击page.htm文件直接打开该网页。通过这两种方式来打开该网页,用户所看到的效果是相同的。实际上,
3、在用户访问或打开该网页之前,该网页的内容已经确定了,不管通过何种方式访问。这正是静态网页的“静态”两个字的意义体现。,1.1.2 动态网页,动态网页是与静态网页相对应的。它的内容可以根据指定的条件(如数据库)动态变化。而且,动态网页往往需要数据库的支持,常常需要与服务器发生交互动作。 目前来说,动态网页的后缀名常见的有“.asp”、“.aspx”、“.jsp”、“.php”、“.perl”、“.cgi”等。特别地,访问动态网页的URL中往往包含标志性符号“?”。,1.1.3 网站的工作原理,网站是一种服务,是一种能够在网络中为客户端提供的网络应用的WWW服务,它由HTTP协议支持。其中,浏览网
4、站的用户往往被称为“客户端”,HTTP协议是一个简单的协议。当客户端需要浏览网页时,它就会向服务器发送一个请求。HTTP就会在客户端和服务器之间建立一条TCP连接,并响应客户端的请求,即把客户端请求的信息发送给客户端,并完成这次请求。 下面按照不同类型的URL,分别介绍网站的工作原理。 1标准URL的工作原理 2只包含“域名目录”的URL的工作原理 3只包含“域名”的URL的工作原理 4包含程序的URL的工作原理,1.2 .NET Framework和ASP.NET,本小节主要介绍.NET Framework和ASP.NET,以及使用ASP.NET开发网站所需要的准备技术,如HTML、CSS、
5、JavaScript等。,1.2.1 .NET Framework概述,.NET Framework是一个支持构建、部署和运行下一代应用程序和Web服务的完整Windows组件。它能够提供效率极高的、基于标准的多语言(如C#、VB.NET、C+、J#等)环境,能够将现有的应用程序与下一代应用程序和服务集成,并能迅速部署和操作Internet规模的应用程序。.NET Framework主要包括两个组件:公共语言运行库(Common Language Runtime,简称为CLR)和.NET Framework类库(Class Library)。,1.2.2 ASP.NET概述,ASP.NET是.
6、NET Framework的一部分,它是一个统一的Web开发模型,包括创建企业级Web应用程序的所必需的各种服务。特别地,开发人员还可以使用.NET Framework类库提供的数以万计的类,并且还可以选择公共语言运行库(CLR)兼容的任何语言(如C#、VB.NET、J#等)来编写应用程序的代码。ASP.NET主要包括以下7个方面的内容。 1ASP.NET页和控件框架 2状态管理 3配置网站 4安全基础结构 5ASP.NET编译器 6ASP.NET调试机制 7XML Web Services,1.2.3 开发ASP.NET网站的准备技术,如果要开发一个功能强大的ASP.NET网站,仅仅只有AS
7、P.NET技术是不够的。通常还需要其他技术支持,如HTML、脚本代码(JavaScript、VBScript等)、CSS(级联样式表)等,具体说明如下。 1HTML 2JavaScript 3CSS,1.3 搭建ASP.NET网站开发环境,本小节介绍搭建开发ASP.NET网站的环境,包括安装Microsoft Visual Studio 2008、配置Microsoft Visual Studio 2008、安装IIS(Internet Information Server,网络信息服务)、配置IIS等内容。,1.3.1 安装Microsoft Visual Studio 2008,下面介绍安
8、装Microsoft Visual Studio Team System 2008简体中文版的操作步骤。,1.3.2 配置集成开发环境(IDE),由于Microsoft Visual Studio 2008集成开发环境(IDE)非常复杂,如果希望以后能够更加方便地开发各种应用程序,则首先需要配置Microsoft Visual Studio 2008集成开发环境。,1.3.3 熟悉集成开发环境(IDE)功能,Microsoft Visual Studio 2008集成开发环境包括数个可以停靠、浮动的面板,如【工具箱】如图1.14所示、【服务器资源管理器】如图1.15所示、【解决方案资源管理器】
9、如图1.16所示、【属性】如图1.17所示等。具体说明如下。,1.3.4 安装和配置IIS,在Windows平台上,IIS(Internet Information Server,网络信息服务)是发布网站的最为常用的工具。通过IIS,可以把网站发布到Internet,使得网络上的其他用户可以访问网站。 1安装IIS 2配置IIS,1.4 创建第一个ASP.NET网站,本节介绍使用Microsoft Visual Studio 2008集成开发环境(IDE)创建第一个ASP.NET网站Sample_01的方法,以及开发Sample_01网站所涉及的各种基本技术,如设计Web页面、编写Web页面的
10、代码隐藏文件、配置网站、运行网站、发布网站等。,1.4.1 创建ASP.NET网站,依次选择【开始】|【所有程序】|【Microsoft Visual Studio 2008】|【Microsoft Visual Studio 2008】命令,打开【起始页-Microsoft Visual Studio】窗体。单击【最近项目】面板中的【创建】下的【网站】链接,弹出【新建网站】对话框,如图1.30所。,1.4.2 解决方案资源管理器,创建Sample_01网站成功之后,Microsoft Visual Studio 2008集成开发环境(IDE)将为该网站创建一个默认网页,名称为“Default
11、.aspx”。可以在【解决方案资源管理器】面板中查看Sample_01网站包含的所有文件和资源,如图1.31所示。,1.4.3 设计Default.aspx页面,在【解决方案资源管理器】面板中双击【Default.aspx】节点,打开Default.aspx页面。Microsoft Visual Studio 2008集成开发环境(IDE)可以以3种视图方式(【设计】、【拆分】和【源】)显示Default.aspx页面。 【设计】视图显示Default.aspx页面的设计界面。【源】视图显示Default.aspx页面的HTML源代码,如图1.32所示。【拆分】视图同时显示Default.as
12、px页面的设计界面和HTML源代码。,1.4.4 编写Default.aspx页面的代码隐藏文件,Default.aspx页面的代码隐藏文件(由该页面的“Page”指令的CodeFile属性指定)为Default.aspx.cs文件。在【解决方案资源管理器】面板中双击【Default.aspx.cs】节点,打开Default.aspx.cs文件。,1.4.5 配置Sample_01网站,在创建Sample_01网站之后,系统将默认添加一个名称为“web.config”的配置文件。该文件可以配置Sample_01网站的各种属性,具体配置方法将在9.7小节中介绍。 把Default.aspx页面设
13、置为Sample_01网站的起始页面,并按【F5】按钮,可以调试或运行该网站。在第一次运行该网站时,系统弹出【未启用调试】对话框,如图1.35所示。该对话框提示用户是否要在web.config配置文件中启用调试。在此,笔者选择【添加新的启用了调试的web.config文件】选项。单击【确定】按钮即可调试或运行该网站。,1.4.6 引入资源文件夹,ASP.NET为网站提供了8个系统文件夹,每一个文件夹可以包含与网站相关的特定的文件或资源具体说明如表1.1所示。,1.4.7 运行网站,把Default.aspx页面设置为Sample_01网站的起始页面,并按【F5】按钮或单击 按钮即可运行Samp
14、le_01网站。在IE浏览器中查看Default.aspx页面,如图1.38所示。 一旦运行了Sample_01网站之后,系统将为该网站提供了一个内置服务器。该内置服务器可以配置网站的根路径、端口、虚拟路径、物理路径等信息。单击任务栏中的【】图标,可以打开Sample_01网站的内置服务器窗口,如图1.39所示。,1.4.8 发布网站,右击【解决方案资源管理器】面板中的【D:.Sample_01】节点,并选择【发布网站】命令,打开【发布网站】对话框,如图1.40所示。在该对话框中,用户可以配置被发布网站的发布位置、是否允许更新此编译站点、是否使用固定命令名和单页程序集、是否对编译程序集启用强命
15、名等属性。单击【确定】按钮可以将Sample_01网站发布到“D:Project2008Sample_01PrecompiledWebSample_01”位置。,1.5 小结,本章主要介绍了搭建开发ASP.NET 3.5网站的环境,以及开发ASP.NET 3.5网站所需要的入门知识。其中,读者要着重掌握使用Visual Studio 2008集成开发环境开发第一个ASP.NET 3.5网站的方法。只有这样,才能进行后续的开发。下一章将要介绍C#语言的基础知识。,1.6 习题,1在本章介绍的Sample_01网站之上,实现以下功能。 (1)添加名称为“MyPage.aspx”的新页面到网站中。
16、(2)添加Bin、App_Code和App_Themes系统文件夹到该网站中。 (3)使用IIS为该网站创建名称为“Sample_01”的虚拟目录。 (4)把MyPage.aspx页面设置为Sample_01网站的默认页面。 (5)在IE浏览器中查看MyPage.aspx页面。,第2章 C#语言基础,C#是一种简单、现代、面向对象且类型安全的编程语言,已经分别由ECMA International和ISO/IEC组织接受并确立了标准。C#不但是面向对象编程,而且C#进一步提供了对面向组件编程的支持,可以通过属性(property)、方法(method)和事件(event)来提供编程模型;并且还
17、提供了关于组件的声明性信息的属性(attribute)和文档。本章将讲解C#语言的基础知识,主要介绍以下知识点。 数据类型,包括值类型和引用类型。 变量、运算符、语句和注释。 字符串处理方法。 时间处理方法。,2.1 数据类型,C#语言的基本数据类型被划分为值类型、引用类型和指针类型。值类型和引用类型属于常用类型,而指针类型很少使用,因此,在此不做详细介绍。值类型的变量直接存储其数据,引用类型的变量则存储其数据的存储地址,并通过存储地址来访问其数据。,2.1.1 值类型,值类型是指直接存储其数据的数据类型,派生于System.ValueType类。它主要包括结构(struct)类型和枚举(en
18、um)类型。结构类型包括数值(Numeric)类型、布尔(bool)类型和自定义的结构类型。 数值类型包括整数类型、浮点数类型和decimal。整数类型包括sbyte、byte、char、short、ushort、int、uint、long和ulong。浮点数类型包括float和double。值类型的关系图如图2.1所示。 1整数类型 2浮点类型 3decimal类型 4布尔类型 5结构类型 6枚举类型,2.1.2 引用类型,引用类型是指直接存储其数据的存储地址的数据类型,都直接或间接继承于System.Object类。引用类型的变量总是分配在堆上。引用类型主要包括5个类型,即object类型
19、、string类型、class类型、接口类型和委托(delegate)类型。 1object类型 2string类型 3class类型 4接口类型 5委托类型,2.2 变量、运算符和语句,变量、运算符和语句是C#代码的重要组成部分,它们共同构建了C#语言编程代码。变量表示存储位置,运算符定义了各个变量之间的操作,语句是构造程序操作的基本元素。,2.2.1 变量,变量表示存储位置。每一个变量都存在一个类型,该类型确定变量存储的值。C#语言中的变量可以分为7种类型:局部变量、静态变量、实例变量、数组元素、值参数、引用参数和输出参数。 1局部变量 2静态变量 3值参数 4引用参数 5输出参数,2.2
20、.2 运算符,C#共定义了48种运算符,根据它们执行的操作类型将它们划分为9个类别,具体说明如表2.2所示。,2.2.3 语句,程序的操作往往是使用语句(statement)来表示的。语句可以声明局部变量或常量,调用方法,创建对象,给变量、属性或字段赋值等操作。C#支持以下10种常用语句。,2.2.4 条件语句,条件语句是指需要根据指定的条件执行预先指定语句的语句,它包括两种语句:if语句和switch语句。其中,if语句用于二个条件之间的选择,switch语句可以用于多个条件之间的选择。 1if语句 2switch语句,2.2.5 迭代语句,迭代语句是指可以重复执行嵌入的语句块,它包括4种语
21、句:for语句、foreach语句、while语句和do语句。 1for语句 2foreach语句 3while语句 4do语句,2.2.6 注释,注释是可以插入在代码块中,并可以标记或说明程序块,但是注释不会被执行。C#语言可以使用单行注释和多行注释。,2.3 字符串处理,字符串是C#语言编程中最为常见的部分,它的类型为string。.NET Framework提供了两种字符串:不变字符串(由String类表示)和可变字符串(由StringBuilder),并为开发人员处理字符串提供了一系列的基本方法和操作。,2.3.1 不变字符串和可变字符串,.NET Framework把字符串分为不变字
22、符串(由String类表示)和可变字符串(由StringBuilder)。其中,不变字符串一旦被创建,它就不能被修改,而可变字符串被创建之后,是可以被修改的,如可以进行插入、追加、替换、移除等操作。 String类可以用来表示文本,即由Unicode字符组成的字符串。String对象是Char对象的有序集合。,2.3.2 插入字符串,String类提供了Insert()方法实现在指定位置插入字符串的功能。Insert()方法的最常见的语法形式如下。 public string Insert(int startIndex,string value); 其中,startIndex参数为一个整数,表
23、示字符串插入的索引位置。value参数表示被插入的字符串。,2.3.3 替换字符串,String类提供了Replace()方法实现替换指定字符串的功能。Replace()方法的最常见的语法形式如下。 public string Replace(string oldValue,string newValue); 其中,oldValue参数指定被替换的字符串,newValue参数指定为替换的字符串。,2.3.4 删除字符串,String类提供了Remove()方法实现从指定位置删除字符串的功能。Remove()方法的最常见的语法形式如下。 public string Remove(int star
24、tIndex,int count); 其中,startIndex参数指定被删除字符的开始索引位置,count参数指定被删除字符串的长度。,2.3.5 分隔字符串,String类提供了Split()方法可以将指定的字符串分隔为多个子字符串,并返回由子字符串组成的字符串数组。Split()方法的最常见的语法形式如下。 public string Split(char separator, StringSplitOptions options); 其中,separator参数指定分隔字符组成的字符数组,options参数指定字符串分隔选项,它的值可以为StringSplitOptions.Remov
25、eEmptyEntries(表示返回的数组不包括空字符串)和StringSplitOptions.None(表示返回的数组可以包括空字符串)。,2.3.6 填充字符串,String类提供了PadRight()和PadLeft()方法能够在指定的字符串提供字符的方法。其中,PadRight()方法在字符串的右边填充字符,PadLeft()方法在字符串的左边填充字符。其中,PadLeft()方法最常见的语法形式如下。 public string PadLeft(int totalWidth,char paddingChar); 其中,totalWidth参数指定填充字符之后的字符串的总长度,pad
26、dingChar参数指定填充的字符。,2.3.7 连接字符串,String类提供了Concat()方法能够将两个字符串连接为一个字符串,Join()方法可以将多个字符串连接为一个字符串。Concat()方法的最常见的语法形式如下。 public string Concat(string str0,string str1); 其中,str0和str1参数都指定被连接的字符串。,2.3.8 获取子字符串,String类提供了SubString()方法能够获取指定位置处的子字符串。SubString()方法的最常见的语法形式如下。 public string SubString(int startI
27、ndex,int length); 其中,startIndex参数指定子字符串在模式字符串中的开始位置,length参数指定子字符串的最大长度。,2.3.9 追加字符串,StringBuilder类提供了Append()和AppendLine()方法能够在指定位置追加字符串。其中,AppendLine()方法在追加指定字符串之后,然后在字符串的末尾默认追加一个换行符。Append()方法最常见的语法形式如下。 public string Append(string value); 其中,value参数指定被追加的字符串。,2.4 时间处理,时间也是C#语言编程中最为常见的部分,它的类型为Dat
28、eTime。.NET Framework为处理时间提供了多个属性和方法,并为开发人员处理时间提供了一系列的基本方法和操作。,2.4.1 DateTime结构,DateTime是一个结构,且为值类型,表示时间上的一刻,通常以日期和当天的时间表示。DateTime值类型表示值的范围为公元0001年1月1日午夜12:00:00公元9999年12月31日晚上11:59:59之间的日期和时间。DateTime表示的时间字符串由年、月、日、时、分、秒,以及分隔符组成。最常用的一种格式如下所示。 yyyy-MM-dd hh:mm:ss,2.4.2 DateTime结构的字段和属性,DateTime结构包含2
29、个字段和16个属性。其中,这2个字段为MaxValue和MinValue,它们分别表示DateTime的最大可能值和最小可能值。16个属性可以获取时间的各种值,如年份、月份、日期、小时、分钟、秒等。,2.4.3 格式化时间,DateTime结构提供了多个以“To”开头的方法可以将时间转换为不同格式的字符串。这些方法的具体说明如表2.5所示。,2.4.4 时间间隔TimeSpan,TimeSpan结构表示一个时间间隔或持续时间,可以按照正负天数、小时数、分钟数、秒数以及秒的小数部分进行度量。用于度量持续时间的最大时间单位是天。 TimeSpan值可以表示为“-d.hh:mm:ss.ff”格式的字
30、符串。其中,减号是可选的,它指示负时间间隔;d分量表示天;hh表示小时(24小时制);mm表示分钟;ss表示秒,ff为秒的小数部分。如“12.10:30:50”表示12天、10小时、30分钟和50秒。,2.4.5 计算时间的差,DateTime结构提供了Subtract()方法,该方法可以计算两个时间的差值,也可以计算时间和时间间隔的差值。,2.4.6 追加时间,DateTime结构提供多个以“Add”开头的方法可以在指定的时间上追加一个时间差值,从而得到一个新的时间。这些方法的具体说明如表2.6所示。,2.5 小结,本章主要介绍了C#语言的基础知识,如数据类型、变量、运算符、语句、字符串处理
31、和时间处理等。其中,读者要着重掌握数据类型、变量、运算符、语句等基础知识,为后续编写C#程序代码奠定基础。下一章将要介绍C#语言中的面向对象编程技术。,2.6 习题,在Visual Studio 2008集成开发环境中创建名称为“CSharpWeb”的ASP.NET网站,并实现以下功能。 (1)将名称为“Default.aspx”的页面添加到该网站中。 (2)创建一个整型变量vint和一个字符串变量vstring,将vint变量转换为字符串,将vstring变量转换为一个整数。 (3)创建两个字符串:str1和str2,并演示字符串的常用操作,如插入字符串、替换字符串、删除字符串、分隔字符串、
32、填充字符串、连接字符串、获取子字符串、追加字符串等。 (4)获取系统的当前时间,并显示在网页上。,第3章 C#面向对象编程,C#是一种面向对象的编程语言,它通过字段(Field)、属性(Property)、方法(Method)、事件(Event)等机制提供编程模型。本章节主要介绍以下知识点。 类。 结构。 属性和方法。 派生和重载。 委托和事件。 委托回调。,3.1 类、对象和实例化,类是C#中最基础的类型,它是一种数据结构,将字段(如状态)和操作(如方法、函数等)组合在一个单元中。在C#中,声明类需要使用class关键字。声明类的语法如下所示。 public | protected | in
33、ternal | protected internal | private class ClasseName /类的成员 public、protected、internal、protected internal和private用来设置类的访问性。若省略了该特性,则默认为private。ClassName表示类的名称。 1类成员的种类 2类的访问性控制,3.2 结构,像类一样,结构(struct)是一种能够包含数据成员和函数成员的数据结构,它具有以下6个特点。 结构是值类型,而类是引用类型。 所有的结构都继承于System.ValueType,而不能从另外一个结构或类继承。 实例化结构时,可以不
34、使用new运算符。 结构可以声明构造函数,但是该函数必须携带参数。 结构也可以实现接口。 因为结构也可以用作可为null的类型,因此,也可以将null赋值给结构。,3.3 创建多边形类Polygon,【实例3-2】介绍创建多边形类Polygon的方法。该类包含属性(Points)、索引器、方法(Polygon()和Print(Bitmap bm))、委托(MyDelegate(int i))、事件(printPointEvent)等成员。其中,委托和事件将在3.5小节中进行介绍。,3.3.1 定义Polygon类,【示例3-11】定义了名称为“Polygon”的类,并省略了该类的成员的代码。P
35、olygon类将用来表示一个多边形。,3.3.2 定义属性,【示例3-12】在Polygon类中定义了一个名称为“Points”的属性。该属性用来保存多边形的点的坐标。Points属性包含了get和set方法,因此,开发人员可以获取或设置该属性的值。,3.3.3 定义索引器,索引器又称为含参属性,它提供索引的方式来访问类或结构,即使用与访问数组的方式来访问类或结构。 【示例3-13】在Polygon类中定义了一个索引器,以提供了按索引方式来访问Polygon类的points字段。该索引器使用index参数(类型为整数,即用于访问points数组的索引值)指定被操作的points数组的成员。,3
36、.3.4 定义函数成员,【示例3-14】在Polygon类中定义了一个构造函数,它不包含任何代码。 【示例3-15】在Polygon类中定义了一个名称为“DrawPolygon()”的函数。 【示例3-16】在Polygon类中定义了一个名称为“Print(Bitmap bm)”的函数。该函数包含bm参数(类型为Bitmap),它表示被输出到网页上的Bitmap类型的图像。Print(Bitmap bm)函数将bm参数指定的Bitmap类型的图像的输出到网页上。,3.4 派生类和重载方法,和C+语言一样,C#语言中的类也支持继承(inheritance)和多态性(polymorphism)。但
37、是,C#中的类不能同时继承于多个类。 不妨设A和B类,且B类继承于A类。那么,B类称为A类的派生类,A类称为B类的父类。另外,派生类可以使用override关键字重新定义其父类中的属性、方法、索引器等。其中,使用override关键字重新定义其父类中的方法,称为重载方法。,3.4.1 创建派生类Circularity、Triangle和Square,【示例3-17】定义了名称为“Circularity”的类,用来表示圆。该类从Polygon类派生,并继承了Polygon类的所有属性和方法。另外,Circularity类还定义了一个构造函数Circularity()。 【示例3-18】定义了名称
38、为“Triangle”的类,用来表示三角形。该类从Polygon类派生,并继承了Polygon类的所有属性和方法。另外,Triangle类还定义了一个构造函数Triangle()。 【示例3-19】定义了名称为“Square”的类,用来表示四边形。该类从Polygon类派生,并继承了Polygon类的所有属性和方法。另外,Square类还定义了一个构造函数Square()。,3.4.2 重载方法,在3.3.4小节中,Polygon类定义了一个名称为“DrawPolygon()”的虚方法(使用virtual关键字修饰)。因此,Polygon类的派生类可以定义其自己的DrawPolygon()方法
39、。 【示例3-20】在Circularity类中也定义了DrawPolygon()方法,并使用override关键字修饰。即表示该方法重写了Circularity类的父类(Polygon类)中的DrawPolygon()方法。该方法的具体实现代码已经省略。,3.5 委托和事件,委托(delegate)也是一种类型,它表示对具有特定参数列表和返回类型的方法的引用。通过委托,开发人员能够将方法作为实体赋值给变量和作为参数传递。委托类似于C+语言中的函数指针。 事件(event)是一种特殊的委托,它是一种使对象或类能够提供通知或消息的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。,
40、3.5.1 声明事件的参数类,【示例3-21】声明了名称为“PointEventArgs”的类,该类继承于EventArgs类(为包含事件数据的类的基类)。PointEventArgs类声明了一个名称为“Points”属性,用来表示多边形点坐标的集合,它的类型为CustomPoint。,3.5.2 声明委托和事件,委托(delegate)是一种数据结构,它可以用来引用静态方法、类的实例,以及类的实例的方法。 事件(event)是一种使对象或类能够提供通知或消息的成员。客户端可以通过提供事件处理程序为相应的事件添加可执行代码。 事件是一种特殊的委托,它包括两个参数:指定事件源的“对象源”参数和封
41、装与事件相关的信息的“e”参数。其中,e参数的类型可以为EventArgs类或其派生类。,3.5.3 引发事件,一旦创建事件之后,如果要该事件执行指定的操作,则需要某种引发该事件的机制。例如,定义一个方法或函数来引发事件。,3.6 绘制圆,【实例3-2】介绍了在网页上绘制一个圆的方法。,3.7 绘制三角形,【实例3-3】介绍了在网页上绘制一个三角形的方法。,3.8 绘制四边形,【实例3-4】介绍了在网页上绘制一个四边形的方法。,3.9 使用委托进行回调,【实例3-5】介绍了使用委托进行回调指定事件的方法。,3.10 小结,本章主要介绍了C#面向对象编程的基础知识:类和结构,以及它们的数据成员和
42、函数成员。其中,读者要着重掌握创建类和结构的方法,以及类的派生、继承和重载等技术。下一章将要介绍C#语言中的数组和集合的编程技术。,3.11 习题,1、在Visual Studio 2008集成开发环境中创建名称为“ClassWeb”的ASP.NET网站,并实现以下功能。 (1)将名称为“Default.aspx”的页面添加到该网站中。 (2)创建3个类:A、B和C。其中,B和C类都继承与A类。 (3)在A类定义一个名称为“Print()”的方法,该方法在网页上显示A类的名称。 (4)在B类定义一个名称为“Print()”的方法,该方法在网页上显示B类的名称。 (5)在C类定义一个名称为“Pr
43、int()”的方法,该方法在网页上显示C类的名称。 (6)在Default.aspx页面中分别创建A、B和C类的实例,并调用Print()方法显示类的名称。,第4章 数组和集合编程,.NET Framework提供了一种被称为“集合”的对象,使用这些对象可以处理或操作一组具有相同特性的元素。数组也是一种集合对象,它可以将多个类型相同的元素组合为一个整体,从而通过数组统一访问或操作这些元素。本章将讲解使用数组和集合对象进行编程的方法,主要介绍以下知识点。 遍历数组。 多维数组和交错数组。 动态数组。 System.Array类。 枚举。 哈希表、堆栈和队列。,4.1 数组,在C#程序开发中,数组
44、是最常用的数据结构之一。它是相同数据类型对象的集合,该集合的长度(即数组的长度)可以为0或大于0的整数。,4.1.1 数组概述,数组是有序数据的集合。数组中的每一个元素都属于同一个数据类型。用一个统一的数组名和下标来惟一确定数组中的元素。例如,一个班有20名学生,可以用s1,s2,s3,s20表示20个学生的成绩。s为数组名,下标表示学生的序号。s10(整数10为下标)表示第10个学生的成绩。数组的元素的数据类型被称为元素类型。数组的元素可以为任何类型,甚至可以为数组。 1数组的维度数 2声明数组 3实例化数组 4初始化数组,4.1.2 遍历数组,遍历数组是指依次访问数组中的每一个元素的操作。
45、访问数组中的元素最常用的方法是使用下标。根据是否使用下标,遍历数组方式分为两种。第一种,使用下标遍历,如for、while、dowhile等语句。第二种,不使用下标遍历,如foreach语句。下面依次讲解这两种方式。 1使用for语句遍历数组 2使用foreach语句遍历数组,4.1.3 多维数组,多维数组是指维度数大于1的数组,如二维数组、三维数组等。声明二维数组的语法如下所示。 type, arrayName; 其中,type表示数组元素的类型,如int、double、string、object等;中括号()中间存在一个逗号(,)表示该数组为一个二维数组;arrayName表示数组的名称。
46、,4.1.4 交错数组,交错数组又称为“数组的数组”,它的元素也为数组。声明二维交错数组的语法如下所示。 type arrayName; 其中,type表示数组元素的类型,如int、double、string、object等;type关键字之后包含两个中括号()表示该数组为一个二维交错数组;arrayName表示数组的名称。,4.1.5 动态数组,动态数组(ArrayList)又称为可变数组,数组的长度可以动态修改。动态数组在保存元素时,都保存元素的引用,而不是元素的具体值。因此,动态数组的元素类型可以是任何类型,而且各个元素的类型也可以不相同。,4.1.6 System.Array类,在4.
47、1.1小节中已经提及了System.Array类,所有的数组都直接或间接派生于System.Array类。因此,System.Array类为数组提供了最基本的属性和方法。如获取数组长度的Length属性、设置数组指定元素的值的SetValue()方法等。System.Array类的常用属性如表4.3所示,4.2 抽签程序,【实例4-1】实现了抽签功能,即随机抽取给定的签号,并把抽签结果显示在网页中。,4.3 枚举和集合,.NET Framework提供了大量的集合对象,如哈希表、堆栈、队列、字典等。使用这些集合对象可以处理或操作一组具有相同特性的元素。枚举是一种非常特殊的值类型,它可以用来表示
48、一组命名的常量。下面将介绍枚举和集合对象的知识点和使用方法。,4.3.1 枚举,枚举类型(Enum)是一种独特的值类型,它用于声明一组命名的常量。所谓“枚举”就是将变量的值逐一列举出来,变量的值只限于列举出来的值的范围之内。声明枚举类型使用enum关键字。,4.3.2 哈希表,哈希表(HashTable)表示“键/值”对的集合,这些“键/值”对根据键的哈希代码进行组织。它的每一个元素都是一个存储在类型为DictionaryEntry的“键/值”对,并且元素的键值不能为空。哈希表也是一个类。创建一个哈希表对象的方法和创建一个类的对象的方法相似,只要使用“new”操作符即可。,4.3.3 堆栈,堆
49、栈(Stack)是限定在表尾进行插入和删除操作的线性表,它用来表示对象的简单的后进先出的集合。堆栈也是一个类。创建一个堆栈对象的方法和创建一个类的对象的方法相似,只要使用“new”操作符即可。,4.3.4 队列,队列(Stack)是限定在表尾进行插入、在表头进行删除操作的线性表,它用来表示对象的简单的喜先进先出的集合。队列也是一个类。创建一个队列对象的方法和创建一个类的对象的方法相似,只要使用“new”操作符即可。,4.4 缓存数据模块,【实例4-2】使用哈希表实现了缓存数据功能,并创建了用于缓存数据的MyCache类。,4.5 小结,本章主要介绍了数组和集合的编程方法和技术,如遍历数组、多维
50、数组、交错数组、动态数组等,以及分别使用数组和哈希表实现抽签程序和数据缓存模块的方法。其中,读者要着重掌握创建、遍历数组的方法,以及动态数组的使用方法。下一章将要介绍C#语言的高级技术。,4.6 习题,1、在Visual Studio 2008集成开发环境中创建名称为“ArrayWeb”的ASP.NET网站,并实现以下功能。 (1)将名称为“Default.aspx”的页面添加到该网站中。 (2)创建一个名称为“salary”的2维数组,两维的长度分别为12和31。该数组用来存放1年中每一天的日薪水。 (3)使用for或foreach语句初始化salary数组。 (4)使用for或foreac
51、h语句遍历salary数组,并显示每一个元素的值。 (5)创建一个哈希表,并将salary数组中的元素存放到哈希表中。,第5章 C#高级技术,C#高级技术为开发高效的、功能强大的应用程序提供了技术支持。C#高级技术主要包括C# 2.0中的高级技术和C# 3.0的高级技术,如泛型列表、可空类型、匿名方法、迭代器、隐型局部变量、对象和集合初始化器、匿名类型、隐型数组、Lambda表达式、查询表达式等。本章将讲解使用C#高级技术来编程的方法,主要介绍以下知识点。 创建和使用泛型列表。可空类型和匿名方法。 迭代器。创建隐型变量和隐型数组。 创建匿名对象。Lambda表达式。 查询表达式。反射。 异常处
52、理。创建和使用命名空间,5.1 C# 2.0高级技术,C# 2.0在C# 1.0基础之上引入了新的语言机制,如泛型列表、可空类型、匿名方法、迭代器等。本小节主要介绍C# 2.0的高级技术。,5.1.1 创建和使用泛型列表,泛型(Generic)提供了一种新的、创建数据类型的机制。使用泛型,开发人员可以把类型作为参数。声明泛型的语法如下。 Variable var; Variable为基础类型,T为元素类型,var为变量的名称。声明“Stack”的实例的类型由创建时所指定的类型确定。该实例将存储该类型的数据而不进行数据类型转换。其中,类型形参T只起占位符的作用,直到在使用时为其指定了实际类型。,
53、5.1.2 使用可空类型处理数据,可空(null)类型是一个组合了基础类型(如int等)的值和布尔空值指示符的结构。它的实例具有两个只读属性:Value和HasValue。Value属性为该实例的值(如果存在),它的类型是实例的继承类型。HasValue属性的类型为bool类型,如果该实例的存在值,则HasValue属性的值为true,否则为false。声明可空类型变量的语法如下。 System.Nullable variable 或者 T? variable T是可空类型变量的基础类型,variable为变量名称。,5.1.3 创建匿名方法,匿名方法(Anonymous Method)是指在
54、创建方法时,隐藏方法的名称的一种技术。通过这种技术,开发人员可以允许与委托关联的代码以“内联”方式写入使用委托的位置,从而方便地将代码直接“绑定”到委托实例。除此之外,匿名方法还能够对包含它的函数成员的局部状态进行共享访问。,5.1.4 迭代器,迭代器(Iterator)是一个产生有序值序列的语句块,它可以使用yield关键字对数组或集合类执行迭代操作。一般情况下,迭代器包含以下两种迭代语句。 yield return语句,产生迭代器的下一个值。 yield break语句,指示迭代完成。 创建迭代器最常用的方法是对IEnumerable接口实现GetEnumerator()方法。,5.2 C
55、# 3.0高级技术,C# 3.0在C# 1.0和C# 2.0的基础之上引入了新的语言机制,如隐型局部变量、对象和集合初始化器、匿名类型、隐型数组、Lambda表达式、查询表达式等。本小节主要介绍C# 3.0的新技术。,5.2.1 使用var创建隐型局部变量,通常情况下,在声明一个变量时,总是要指定该变量的数据类型。如果不指定变量的数据类型,那么将会产生编译错误。然而,在C# 3.0语言中,当声明一个变量时,可以使用“var”关键字来指定变量的类型,而不明确该变量的类型。该变量实际的数据类型将在初始化该变量的值的表达式中推断出来。,5.2.2 对象和集合初始化器,对象和集合初始化器分别用于初始化
56、对象和集合。对象初始化器可以不调用类的构造函数就能够创建该类的实例,并设置该实例的属性的值。集合初始化器由一系列元素组成,并封闭于“”和“”标记内,并将这些元素直接初始化集合的元素。 1对象初始化器 2集合初始化器,5.2.3 创建匿名类型的对象,匿名类型提供一种新的技术机制,通过这种技术机制可以使用“var”关键字、“new”操作符和匿名对象初始化器创建一个新的对象。这个新创建的对象就是一个匿名类型的对象。,5.2.4 创建隐型数组,隐型数组和匿名类型的对象比较相似。隐型数组使用“var”关键字和数组初始化器创建,且数组初始化器中的所有元素的数据类型都必须能够隐式转换为同一个数据类型(不能为
57、null)的元素。即数组初始化器必须存在一种数据类型(不能为null),使得该数组初始化器中的所有元素都能够隐式转换为该类型的元素。,5.2.5 构建Lambda表达式,Lambda表达式是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。Lambda表达式由输入参数(如果存在)、Lambda运算符(=)和表达式或语句块构成。Lambda表达式的基本语法如下。 (input parameters) = expression input parameters表示输入参数,“=”为Lambda运算符,expression表示表达式。 1Lambda表达式的输入参数 2La
58、mbda表达式的表达式或语句块,5.2.6 查询表达式,查询表达式是一种用查询语法表示的表达式,由一组用类似于SQL或XQuery的声明性语法编写的子句组成。每一个子句可以包含一个或多个C#表达式,而这些表达式本身又可能是查询表达式或包含查询表达式。查询表达式和其他表达式一样,可以用在C#表达式有效的任何上下文中。查询表达式包含以下8个基本子句。 from子句,指定查询表达式的数据源和范围变量。 select子句,指定筛选元素的逻辑条件。一般由逻辑运算符组成。 where子句,指定查询结果的表现形式。 group子句,对查询结果进行分组。 orderby子句,对查询结果进行排序。 join子句
59、,用来连接多个查询操作的数据源。 let子句,可以用来引入用于存储子表达式查询结果的范围变量。 into子句,提供一个临时标识符,使用该标识可以允许对join、group或select子句结果的引用。,5.3 其他高级技术,本小节主要介绍除了5.1小节和5.2小节介绍之外的C#语言高级技术,如反射机制、异常处理、创建和引用命名空间等。,5.3.1 使用反射获取程序集信息,反射(Reflection)为.NET Framework提供一种技术机制,通过这种技术可以获取程序集中的模块、类型、成员等信息。程序开发人员可以使用反射动态地创建类型的实例,并将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。,5.3.2 异常处理,异常(Exception)处理是一种结构化的、统一的、类型安全的处理机制。异常可以用于处理系统级和应用程序级的错误状态。异常处理模块一般包括以下3种类型模块。 try块,包含需要恢复或者清理操作的代码,即有可能发生异常的代码。 catch块,包含出现异常时需要执行的响应代码。 finally块,包含确保一定执行的程序代码,如资源清理操作等。,5.3.3 创建和引用命名空间,命名空间(Namespace)是一种组织C#程序代码中出现的不同类型的方式。在概念上,命名空间和计算机文件系统中的文
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 45507-2025智能服务预测性维护绩效评价方法
- 日用品销售合同
- 企业股权转让协议合同
- 堤防工程施工合同
- 挡土墙工程劳务分包合同
- 房屋买卖居间协议和合同
- 承包合同公司承包合同
- 务工付款合同协议书
- 应届毕业生签合同协议书
- 买卖鱼合同协议
- 2025年中国工业X射线检测设备行业市场集中度、企业竞争格局分析报告-智研咨询发布
- 职工维权知识培训课件
- 《制作七巧板》教学设计-2024-2025学年五年级上册劳动浙教版
- 2024银行春招招聘解析试题及答案
- 四川达州历年中考作文题与审题指导(2004-2024)
- 第15课《青春之光》课件-2024-2025学年统编版语文七年级下册
- 独立储能电站项目运维管理方案
- 青岛市2025年高三语文一模作文题目解析及范文:成见与主见
- (二模)晋中市2025年高三高考二模 语文试卷(含A+B卷答案详解)
- 2020年1月浙江省普通高校招生选考科目考试政治试题及答案
- 70岁老年人三力测试能力考试题库及答案
评论
0/150
提交评论