c 应用开发与实践 教学课件 胡学钢 第17章 c 语言新特性

上传人:繁星 文档编号:88247723 上传时间:2019-04-22 格式:PPT 页数:48 大小:1.42MB
返回 下载 相关 举报
c 应用开发与实践 教学课件  胡学钢 第17章  c 语言新特性_第1页
第1页 / 共48页
c 应用开发与实践 教学课件  胡学钢 第17章  c 语言新特性_第2页
第2页 / 共48页
c 应用开发与实践 教学课件  胡学钢 第17章  c 语言新特性_第3页
第3页 / 共48页
c 应用开发与实践 教学课件  胡学钢 第17章  c 语言新特性_第4页
第4页 / 共48页
c 应用开发与实践 教学课件  胡学钢 第17章  c 语言新特性_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《c 应用开发与实践 教学课件 胡学钢 第17章 c 语言新特性》由会员分享,可在线阅读,更多相关《c 应用开发与实践 教学课件 胡学钢 第17章 c 语言新特性(48页珍藏版)》请在金锄头文库上搜索。

1、在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,本章要点:,1 隐式类型var的用法 2 对象和集合初始化器的用法 3 如何自定义扩展方法 4 匿名类型的定义及使用 5 Lambda表达式的定义及应用 6 自动实现属性的定义 7 查询表达式的基本应用 8 使用LINQ 到 SQL技术操作数据库,第17章 C#语言新特性,主要内容,17.1 简述C#的新技术 17.2 列举C#语言的新特性 17.3 综合实例使用LINQ过滤文章中包含特殊词语的句子,第17章 C#语言新特性,第17章 C#语言新特性,C#语

2、言的发展经历了多个版本,从C#1.1到C#2.0,再至今日比较流行的C#3.0和C#4.0,Windows平台下的编程变得越来越容易操作。强大的功能、简洁的代码使得由代码组成的编程世界平添许多色彩与欢乐。C#3.0和C#4.0可以视为其他版本的扩充版本,这两个版本添加了许多新功能和新特性。,17.1 简述C#的新技术,C# 3.0和C#4.0在保持C#2.0原有技术的基础之上,增加了若干新特性。这些新特性使C#语言变得更加强大也更加现代化,从而大大提高了C#的开发效率。用C#3.0新特性编写的程序需要在.NET Framework 3.5及以上版本的框架下运行;用C#4.0新特性编写的程序需要

3、在.NET Framework 4.0及以上版本的框架下运行。C#语言的主要新增特性如下: 隐式类型var 在与本地变量一起使用时,var 关键字指示编译器根据初始化语句右侧的表达式推断变量或数组元素的类型。 对象初始化器 支持无需显式调用构造函数即可进行对象初始化。 集合初始化器 支持使用初始化列表而不是对Add或其他方法的特定调用来初始化集合。 扩展方法 使用静态方法扩展现有类,这些静态方法可以通过实例方法语法进行调用。,匿名类型 允许动态创建可以添加到集合中并且可以使用 var 进行访问的未命名结构化类型。 Lambda 表达式 支持可绑定到委托或表达式树并带有输入参数的内联表达式。 自

4、动实现的属性 支持使用简化的语法声明属性。 LINQ技术 使用LINQ技术(中文译作“语言集成查询”)可以使用语言关键字和熟悉的运算符针对强类型化对象集合编写查询的功能。 上面总共列举了8种主要的新特性,可以说前7种新特性都是为最后一种LINQ技术服务的、都是特意为LINQ技术而设计的,下面将对这8种特性进行讲解。,17.2 列举C#语言的新特性,17.2.1 隐式类型var 17.2.2 对象初始化器 17.2.3 集合初始化器 17.2.4 扩展方法 17.2.5 匿名类型对象 17.2.6 Lambda 表达式 17.2.7 自动实现属性 17.2.7 自动实现属性,根据17.1节中列出

5、的C#语言的8大新特性,下面逐一的详细讲解。本节在讲解时,首先列出每种特性的概念和语法,然后再举例说明该种特性的具体方法。学会使用C#语言的新特性编写程序,会使编写的代码更加简洁和优雅。,17.2 列举C#语言的新特性,C#新技术提供了一个特殊的关键字var,允许程序使用var关键字而无需显示给出类型即可定义一个局部变量。在使用var关键字声明变量时,编译器将会通过该变量的初始化代码来推断出该变量实际的类型。 使用var关键字定义变量十分容易,可以把它看做是一个“万能”的类型,在var关键字的后面是局部变量名,然后是变量的初始化表达式,基本语法格式如下: var 【变量名称】=【初始化表达式】

6、; 说明: 使用var关键字可以声明一般变量,也可以声明数组变量。具体是哪一种,编译器可以通过初始化表达式来推断。 【例17-1】 使用var关键字定义一个字符串变量和一个整型数组变量,并对这两个变量赋初值,然后在控制台中输出这两个变量的值,具体代码如下。(实例位置:光盘MR源码第17章17-1) static void Main(string args) var strShow = “这3个男孩子的年龄分别是:“; /使用var声明并初始化字符串变量,17.2.1 隐式类型var,var intAges = new 15,18,16; /使用var声明并初始化整型数组变量 Console.W

7、riteLine(strShow); /输出字符串变量的值 foreach (var age in intAges) /使用var定义一个过程变量age Console.Write(age+“岁 “); /输出整型数组中元素的值 Console.Read(); 程序运行结果如图17-1所示。 图17-1 使用var声明变量,对象初始化器允许在创建对象时使用一条语句为对象指定一个或多个属性(或公共字段)的值,这样就可以以声明的方式初始化任意类型的对象,其语法格式如下: 【数据类型或var】 对象名称 = new 【数据类型】 【属性或公共字段1】, 【属性或公共字段2】 【例17-2】 创建一个

8、控制台应用程序,首先在默认类文件Program.cs中定义一个包含3个属性的类Goods,该类用来描述购买产品的信息(包括商品名称、商品单价、购买数量);然后在应用程序默认类Program的Main方法中使用对象初始化器创建Goods类的对象,最后输出该对象的3个属性值,具体代码如下。(实例位置:光盘MR源码第17章17-2) class Goods private string strName; public string Name /描述商品名称 get return strName; set strName = value; ,17.2.2 对象初始化器,private decimal

9、decPrice; public decimal Price /描述商品单价 get return decPrice; set decPrice = value; private int intQuantity; public int Quantity /描述商品的数量 get return intQuantity; set intQuantity = value; class Program static void Main(string args) var goods = new Goods /创建Goods类的对象, Name = “轿车“, /设置产品名称 Price = 200000

10、, /设置产品价格 Quantity = 3 /设置产品数量 ; /输出goods对象的相关信息 Console.WriteLine(“公司打算购买“ + goods.Quantity + “辆价值“ + goods.Price + “的“ + goods.Name); Console.Read(); 程序运行结果如图17-2所示。,集合初始化器允许在创建集合对象时使用一语句为集合对象添加若干个元素,这样就可以以声明的方式向集合对象中添加元素并初始化元素,使用集合初始化器会使C#程序变得更加优雅和简洁,其语法格式如下: 【集合数据类型或var】 集合对象名称 = new 【集合数据类型】 【元

11、素1】, 【元素2】,【元素3】 【例17-3】创建一个控制台应用程序,首先在默认类文件Program.cs中定义一个包含3个属性的类Goods,该类用来描述购买产品的信息(包括商品名称、商品单价、购买数量);然后在应用程序默认类Program的Main方法中使用集合初始化器创建List集合的对象,最后输出该集合对象中所有元素的属性值,具体代码如下。(实例位置:光盘MR源码第17章17-3) class Goods private string strName; public string Name /描述商品名称 get return strName; set strName = value

12、; ,17.2.3 集合初始化器,private decimal decPrice; public decimal Price /描述商品单价 get return decPrice; set decPrice = value; private int intQuantity; public int Quantity /描述商品的数量 get return intQuantity; set intQuantity = value; class Program static void Main(string args) var list = new List ,new Goods Name =

13、“轿车“, Price = 100000, Quantity=2, new Goods Name = “电脑“, Price = 5000, Quantity=50, new Goods Name = “打印机“, Price = 2000, Quantity = 5 ; /使用集合初始化器创建集合对象 Console.WriteLine(“近期公司打算采购以下商品:“); foreach (var item in list) /遍历集合中的元素 /输出元素的属性值 Console.WriteLine(“价值为0的1,采购数量为2“, item.Price, item.Name, item.Q

14、uantity); Console.Read(); 程序运行结果如图17-3所示。,扩展方法可以向现有类型中“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,可以像实例方法一样进行调用。 要定义扩展方法,需要注意以下几点: 扩展方法必须被定义在一个静态类中,扩展方法自身必须是一个静态方法。 扩展方法中的首个参数必须是this,后面紧跟扩展类的名称,接着是参数名称。 扩展方法可以被扩展类的对象调用,也可以使用在其中定义扩展方法的静态类直接调用。 【例17-4】 创建一个控制台应用程序,首先在默认类文件Program.cs中定义一个静态类Exte

15、ndStringClass,并在该类中定义一个静态方法StringToInt32,用来作为String类型的扩展方法;然后在Main方法中定义一个字符串类型的变量来存储从控制台中读取的数字字符;最后调用该字符串变量的扩展方法StringToInt32将存储在其中的数字字符转换为Int32类型的整数,具体代码如下。(实例位置:光盘MR源码第17章17-4),17.2.4 扩展方法,static class ExtendStringClass /定义一个静态类,用于封装扩展方法 public static Int32 StringToInt32(this String str) /声明一个扩展方法 try return Convert.ToInt32(str); /字符转换为Int32类型 catch (Exception ex) /抛出转换异常 throw ex; class Program static void Main(string args) ,Console.Writ

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

当前位置:首页 > 办公文档 > 工作范文

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