ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02

上传人:E**** 文档编号:89335137 上传时间:2019-05-23 格式:PPT 页数:28 大小:227.50KB
返回 下载 相关 举报
ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02_第1页
第1页 / 共28页
ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02_第2页
第2页 / 共28页
ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02_第3页
第3页 / 共28页
ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02_第4页
第4页 / 共28页
ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02》由会员分享,可在线阅读,更多相关《ASP.NET 3.5动态网站开发基础教程 教学课件 ppt 作者 978-7-302-22342-9 ch02(28页珍藏版)》请在金锄头文库上搜索。

1、2019年5月23日,2019年5月23日,第1页,第2章 C#3.5新增功能,2019年5月23日,2019年5月23日,第2页,教学目标,了解C#语言 掌握C# 程序设计的方法 熟悉和掌握C#3.5新增的几大新特性,2019年5月23日,第2章 C#3.5新增功能,2.1 C#语言简介 2.2隐式类型的局部变量 2.3对象和集合初始值设定项 2.4扩展方法 2.5匿名类型 2.6Lambda 表达式 2.7自动实现的属性,2019年5月23日,2.1 C#语言简介,C#(发音为C Sharp)是由微软公司所开发的一种面向对象,且运行于.NET Framework之上的高级程序设计语言。 C

2、#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言。,2019年5月23日,C#的突出优点包括: 简洁的语法 精心地面向对象设计 为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已熟悉C和C+的程序员而言。 完整的安全性与错误处理 灵活性与兼容性,2019年5月23日,2.2隐式类型的局部变量,2.2.1 隐式类型局部变量的概念 2.2.2 隐式类型局部变量的使用和限制:,2019年5月23日,2.2.1 隐式类型局部变量的概念,隐式类型局部变量,是.Net Framework 3.5的新特性,允许定义局部变量的时候,可以事先不知道变量真正所指向的对象类型

3、,由编译器在给该变量初始化的时候自动根据初始化对象的类型来决定该变量的类型。在C#3.0中增加了一个变量声明var,它可以用var来声明任何类型的局部变量。它仅仅负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量。,2019年5月23日,void DeclareImplicitVars() /隐含的根据对变量的初始化自动的决定变量的类型: var myInt = 0; /现在变量myInt的类型是:整型 var myBool = true; /现在变量myBool的类型是:布尔型 var myString = “Time“; /现在变量myString的类型是:字符

4、串型 var Numbers = new int 1, 3, 5 ; /现在变量Numbers的类型是:Int型数组 ,2019年5月23日,以上的声明语句等效与: void DeclareImplicitVars() int myInt = 0; boolean myBool = true; string myString = “Time“; int Numbers = new int 1, 3, 5 ; ,2019年5月23日,2.2.2 隐式类型局部变量的使用和限制:,(1)var只能够用在方法中的局部变量上,而不能用在类成员上。 (2)必须在定义的时候明确初始化,不能够让编译器无法决定

5、变量的类型,因为定义变量依赖于赋值号右边的表达式。,2019年5月23日,2.3对象和集合初始值设定项,2.3.1 对象初始值设定项 2.3.2集合初始值设定项,2019年5月23日,2.3.1 对象初始值设定项,C# 3.0被希望来允许你包含一个初始化符,从而指定一个新创建的对象或者collection的初始值。这使得你能够一步结合声明和初始化 。 使用对象初始化器,可以让程序员在实例化对象的时候就能直接的赋值操作。例如,添加代码扩展上面的类point。,2019年5月23日,public class Point private int x; private int y; public in

6、t count; public int X get return this.x; set this.x = value; public int Y get return this.y; set this.y = value; ,public Point() this.x=0; this.y=0; public Point(int xPos, int yPos) this.x = xPos; this.y = yPos; ,2019年5月23日,现在我们实例化一个对象,并对其成员进行初始化,有两种方法。 方法1:使用空构造函数,手动给可访问的成员初始化。 static void Main(str

7、ing args) Point p1 = new Point(); p1.X = 1; p1.Y = 1; p1.count = 1; ,2019年5月23日,方法2:使用用户自定义的构造函数,给部分成员初始化,手动修改可访问的成员的值。 static void Main(string args) Point p2 = new Point(1, 1); p2.X = 2; p2.Y = 2; p2.count = 1; ,2019年5月23日,C# 2008提供的新对象初始化器语法使我们更加方便地初始化一个对象。 Point p1 = new Point X = 1, Y = 1, count

8、 = 1 ; /实际作用同于方法1 或者 Point p1 = new Point() X = 1, Y = 1, count = 1 ; Point p2 = new Point(1, 1) X = 2, Y = 2, count = 1 ;/实际作用同于方法2,2019年5月23日,2.3.2集合初始值设定项,类似的,在C#3.0里你可以轻松的用一种更加简洁的方式给collection赋值, 如下的C# 2.0的代码: List animals = new List(); animals.Add(“monkey“); animals.Add(“donkey“); animals.Add(“

9、cow“); animals.Add(“dog“); animals.Add(“cat“); 可以缩短为: List animals = new List “monkey“, “donkey“, “cow“, “dog“, “cat“ ;,2019年5月23日,2.4扩展方法,一旦一个类型被定义并且编译后,除了重新编写这个类型并且编译以外无法再往其内部添加、更新或者移除一些成员。C# 2008提供了扩展方法机制来帮助我们达到这样一个目的。C#3.5扩展方法是给现有类型添加一个方法。现在类型既可是基本数据类型(如int,String等),也可以是自己定义的类。,2019年5月23日,2.5匿名类

10、型,2.5.1 匿名类型的概念 2.5.2 匿名类型的使用和限制,2019年5月23日,2.5.1 匿名类型的概念,在某些情况下,程序员只需要临时地使用一个类型表达一些信息,这个类只需要保存一些只读信息,程序员不用显式的定义一个类,可以使用匿名类型。类型名由编译器生成,并且不能在源代码级使用。这些属性的类型由编译器推断。,2019年5月23日,如果两个或更多个匿名类型以相同的顺序具有相同数量和种类的属性,则编译器会将这些匿名类型视为相同的类型,并且它们共享编译器生成的相同类型信息如: 匿名类型通常用在查询表达式的select子句中,以便返回源序列中每个对象的属性子集。 匿名类型是使用new 运

11、算符和对象初始值设定项(初始化器)创建的。 匿名类型是由一个或多个公共只读属性组成的类类型。不允许包含其他种类的类成员(如方法或事件)。,2019年5月23日,2.5.2 匿名类型的使用和限制,匿名类型由编译器来推断出一个严格的类型,编译器是可以对其类型进行判定的,只是其类型的名字不由编程者所知而已。 匿名类型不能像属性一样包含不安全类型。 定义匿名类型的时候,还需要注意,不能用null赋初值。,2019年5月23日,另外,匿名类型是由一个或多个只读属性组成的类类型。 匿名类型,最常见的使用方式是用其他类型的一些属性初始化匿名类型。 匿名类型具有方法范围。 也就是说,声明或是定义的匿名类型,只

12、能在声明或定义它的那个方法中使用。,2019年5月23日,2.6Lambda 表达式,“Lambda 表达式”是一个匿名函数,是一种高效的类似于函数式编程的表达式,Lambda简化了开发中需要编写的代码量。它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型,支持带有可绑定到委托或表达式树的输入参数的内联表达式。所有 Lambda 表达式都使用 Lambda 运算符 =,该运算符读为“goes to”。该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。Lambda 表达式 x = x * x 读作“x goes to x times x”。,2019年5月23

13、日,2.7自动实现的属性,自动实现的属性(Auto-implemented properties),说的是当属性访问器中不需要其他逻辑时,自动实现的属性可使属性声明变得更加简洁。,2019年5月23日,在以前的C#中,一般使用这个类的属性: public class Sample private string SProperty; private string SProperty getreturn this.sProperty; set this.sProperty=value; ,2019年5月23日,从上面的代码可以看出这个属性只有存(set)取(get)逻辑,没有其它诸如动态分配、或是

14、按条件存取的逻辑,在C# 3.0中,完全可以写成: public class Sample public string SProperty get; set; ,2019年5月23日,在没有给属性赋值之前,编译器会根据其类型赋默认值。使用自动属性也有一些限制: (1)不能使用Automatic Property定义Read-Only或者Write-Only的属性,也就是说: public string SampleProperty get; /编译错误 public string SampleProperty set; /编译错误 (2)如果需要使读访问器和写服务器的访问级别不同,可以在set或者get前加上相应的访问控制符。例如: public string SampleProperty get; protected set; ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号