C#C++C语言学会编程第14课泛型

C#C++C语言学会编程第14课泛型

ID:34103559

大小:33.69 KB

页数:20页

时间:2019-03-03

C#C++C语言学会编程第14课泛型_第1页
C#C++C语言学会编程第14课泛型_第2页
C#C++C语言学会编程第14课泛型_第3页
C#C++C语言学会编程第14课泛型_第4页
C#C++C语言学会编程第14课泛型_第5页
资源描述:

《C#C++C语言学会编程第14课泛型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第14章泛型泛型(Generic)是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。泛型集合类可以将类型参数用作它所存储的对象的类型的占位符;类型参数作为其字段的类型和其方法的参数类型出现。泛型方法可以将其类型参数用作其返回值的类型或者其形参的类型之一。本章将讲解C#语言中的泛型,主要介绍以下知识点。�泛型概述;�泛型方法;�创建泛型列表�创建泛型堆栈。C#从入门到实践14.1泛型概述使用过C++模板的读者可能熟悉泛型(Generi

2、c)这一概念。C#中的泛型能够将类型作为参数来传递,即在创建类型时,事先使用一个特定的符号(如T等)代替实际的类型,在创建该类型的实例时,才指定T的实际类型。泛型可以让类、结构、接口、委托和方法按它们存储和操作的数据的类型进行参数化。泛型能提供更强的编译时类型检查,减少数据类型之间的显式转换,以及装箱操作和运行时的类型检查。使用泛型类型可以最大限度地重用代码、保护类型的安全以及提高性能。泛型最常见的用途是创建集合类。.NETFramework类库在System.Collections.Generic

3、命名空间中包含多个新的泛型集合类,如List、Stack、Queue等。当然,开发人员也可以创建自定义泛型类型。C#从入门到实践14.1.1泛型类声明泛型类声明也是一种类的声明,因此,泛型类声明也遵循类声明的规则。一个泛型类一般至少包含一个类型形参(14.1.2小节中介绍)。当创建该泛型类的实例时,需要指定该类型形参的具体类型。C#从入门到实践14.1.2类型形参类型形参放置在类名后,并在“<”和“>”分隔符中指定。类型形参仅仅是一个简单标识符,是将来提供的类型的形式占位符。换句话

4、说,T类型形参只起占位符的作用,直到在使用时才为其指定了实际类型。每一个类型形参所代表的实际类型由其所在实例创建时指定。特别地,该实例将存储类型形参的数据而不进行数据类型转换。C#从入门到实践14.1.3类型形参的约束通常地,类型形参的类型可以指定为任何类型。然而,一些类型形参需要指定一定种类的类型,如结构、类等。为了实现该功能,就需要限制类型形参的类型,这种限制被称为约束。即在定义泛型类时,可以限制在实例化类时用于类型参数的类型种类。如果尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误

5、。C#从入门到实践14.1.4泛型类的成员泛型类的所有成员都可以直接使用其所属类的类型形参。在运行时,类型形参都被替换为相应的实际类型(该类型在创建类的实例时指定)。C#从入门到实践14.1.5泛型类的静态字段在泛型类中,静态字段的共享方法比较特殊,即只有在具有相同类型形参的类型的实例才能够共享同一个静态字段的值。C#从入门到实践14.2泛型方法泛型方法(GenericMethod)是使用类型参数声明的方法,它可以声明在类、结构或接口中,而这些类、结构或接口本身可以是泛型或非泛型的。如果这些类、结构

6、或接口也是泛型类型时,那么在这些方法内既可以引用该泛型方法的类型形参,也可以使用这些类、结构或接口的类型形参。C#从入门到实践14.2.1声明泛型方法和普通方法相比,除了普通的参数之外,泛型方法还必须包含类型形参,即泛型方法是指在声明中包含类型形参的方法。C#从入门到实践14.2.2调用泛型方法泛型方法调用可以显式指定类型实参列表,或者可以省略类型实参列表并依赖类型推断确定类型实参。通常地,调用泛型方法和调用普通方法一样,但需要为类型形参提供相应的类型实参列表。C#从入门到实践14.2.3通过委托调

7、用泛型方法除了14.3.2中调用泛型方法的方法之外,还可以通过委托来调用泛型方法。C#从入门到实践14.2.4虚泛型方法和普通方法一样,泛型方法也存在虚泛型方法,它也可以使用abstract、virtual和override修饰符进行声明。C#从入门到实践14.3实例一:实现泛型列表本实例首先创建了名称为“GenericList”的泛型类(保存在GenericList.cs文件中),并为该类提供5个方法:Add(Titem)、Remove(Titem)、RemoveAt(intindex)、C

8、lear()和Sort(IComparerc);然后创建该类的实例list,并介绍了GenericList类的属性和方法的使用方法。C#从入门到实践14.3.1设计泛型列表类GenericListGenericList泛型类为T类型形参添加了约束“whereT:IComparable”,即约束T类型形参的类型必须实现IComparable接口。GenericList泛型类包含list字段,表示一个列表,类型为List。程序代码如下。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。