河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#高级-3. 泛型

信息管理与信息系统专业 3.泛型 任课教师:吕雅丽
信息管理与信息系统专业 任课教师:吕雅丽 3. 泛型

本章内容 泛型的含义 如何使用. NET Framework提供的一些泛型类 如何定义自己的泛型 变体如何与泛型一起工作
本章内容 泛型的含义 如何使用.NET Framework提供的一些泛型类 如何定义自己的泛型 变体如何与泛型一起工作

3.1泛型的含义 基本集合类(比如 ArrayList)是没有类型化的,需要把 ob ject项转 换为集合中实际存储的对象类型,类型转换中容易导致异常。 可以定义强类型化的集合类,即定义派生于 Collect ionBase的集合 类(比如上一章的 An i mals集合类),其拥有自己的方法。 每创建一个类,需要类实例集合时需要: 使用已有的集合类,该集合类可以包含新创建的类类型成员; 或者,创建一个新的集合类。 ■简化这一过程可以使用泛型类,集合类特别适合定义成 泛型类。 ■泛型可以是泛型类、泛型接口、泛型方法等
3.1 泛型的含义 基本集合类(比如ArrayList)是没有类型化的,需要把object项转 换为集合中实际存储的对象类型,类型转换中容易导致异常。 可以定义强类型化的集合类,即定义派生于CollectionBase的集合 类(比如上一章的Animals集合类),其拥有自己的方法。 每创建一个类,需要类实例集合时需要: 使用已有的集合类,该集合类可以包含新创建的类类型成员; 或者,创建一个新的集合类。 简化这一过程可以使用泛型类,集合类特别适合定义成 泛型类。 泛型可以是泛型类、泛型接口、泛型方法等

31使用泛型 ■值类型与引用类型的一个重要区别是:值类型必须包含 个值,不能使用未赋值的变量。引用类型可以是nu|。 有时让值类型为空是很有用的,尤其是处理数据库数据 ■泛型使用 System.№ ulab|e类型提供了使值类型为空 的方式。格式: System.Nu||ab|e变量名; 例如: System. Nul lab leintA; intA=nul I
3.1 使用泛型 值类型与引用类型的一个重要区别是:值类型必须包含 一个值,不能使用未赋值的变量。引用类型可以是null。 有时让值类型为空是很有用的,尤其是处理数据库数据 时。 泛型使用System.Nullable类型提供了使值类型为空 的方式。格式: System.Nullable 变量名; 例如:System.Nullable intA; intA=null;

311可空类型 可以使用属性 Hasvalue判断其是否有值。 例如: System. NullableintA; intA=nuli: intA=8 if (intA Has Value) I ■可以使用属性Vaue查看可空类型的值。如果 Hasa|ue是 false,访问 Value属性会抛出异常 简化写法: int? intA
3.1.1 可空类型 可以使用属性HasValue判断其是否有值。 例如:System.Nullable intA; intA=null; intA=8; if(intA.HasValue) { … } 可以使用属性Value查看可空类型的值。如果HasValue是 false,访问Value属性会抛出异常。 简化写法: int?intA;

1、运算符和可空类型 对于可空类型,简单类型的运算符和类型转换,均使用。 int? op1= 5 int? result=op1*2;正确 int? op1 =5 int resu|t=op1*2;错误 int? op1=5 int result=(int)op1*2;正确 int? op1=5 int result=op1. Value*2;正确
1、运算符和可空类型 对于可空类型,简单类型的运算符和类型转换,均使用。 int? op1 = 5; int? result = op1 * 2; 正确 int? op1 = 5; int result = op1 * 2; 错误 int? op1 = 5; int result = (int)op1 * 2; 正确 int? op1 = 5; int result = op1.Value * 2; 正确

2、??运算符 ?运算符称为空合并运算符,是一个二元运算符 op1 ? op2 等价于op1=nu|l?0p2:op1 ●它是一种提供默认值的便捷方式 int? op1 nul I int result =op1 *2?? 5
2、??运算符 ??运算符称为空合并运算符,是一个二元运算符。 op1 ?? op2 等价于 op1==null ? Op2 : op1 它是一种提供默认值的便捷方式。 int? op1 = null; int result = op1 * 2 ?? 5;

3、?运算符 ■?.运算符称为空条件运算符,有助于简化空检查的代码。 public static bool operator ==(Card card1, Card card2) =>(card1?. suit = card2?. suit)&&(card1? rank = card2? rank)
3、?.运算符 ?.运算符称为空条件运算符,有助于简化空检查的代码

4、使用可空类型 创建一个类 Vector,表示极坐标的矢量(包含一个表示大小的值和 一个方向的角度)
4、使用可空类型 创建一个类Vector,表示极坐标的矢量(包含一个表示大小的值和 一个方向的角度) r 𝜃 x y

4、使用可空类型 ■创建一个类 Vector,表示极坐标的矢量(包含一个表示大小的值和 个方向的角度) class vector publ ic de publ ic doub le? Theta = nul I publ ic double? ThetaRadi ans get i return Theta Math PI/ 180.0 publ ic Vector (double? r, double? theta if(r<o theta += 180 theta theta 360 Theta theta
4、使用可空类型 创建一个类Vector,表示极坐标的矢量(包含一个表示大小的值和 一个方向的角度)
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#高级-2. 集合、比较和转换.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#高级-1. 定义类成员.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-9. 定义类和类的成员.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-8. 面向对象编程简介.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-7. 调试和错误处理.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-6. 函数.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-5. 变量的更多内容.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-4. 流程控制语句.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-3. 变量与表达式.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-2. 编写C#程序.pdf
- 河南中医药大学:《程序设计基础 CSharp .NET》教学课件_C#基础-1. C#简介(吕雅丽).pdf
- 河南中医药大学:《程序设计基础 Fundamentals of Programming》实验教学大纲.pdf
- 河南中医药大学:《程序设计基础 Fundamentals of Programming》课程教学大纲.pdf
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第十章 站点导航和母版页 10.2 ASP.NET母版页.ppt
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第十章 站点导航和母版页 10.1 ASP.NET站点导航.ppt
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第九章 数据绑定与数据绑定控件(9.6 DetailsView控件 9.7 FormView控件).ppt
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第八章 使用DataSet访问数据库.ppt
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第九章 数据绑定与数据绑定控件(9.5 GridView控件).ppt
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第九章 数据绑定与数据绑定控件(9.1~9.4).ppt
- 电子工业出版社:《ASP.NET数据库网站设计教程(C#版)》配套教学资源(PPT课件)第七章 使用.NET数据提供程序访问数据库(执行数据库命令的Command对象、读取数据的DataReader对象).ppt
- 河南中医药大学:《信息技术基础》实验指导_实验1:C语言的编程环境.doc
- 河南中医药大学:《信息技术基础》实验指导_实验2:基本数据类型、运算符与表达式.doc
- 河南中医药大学:《信息技术基础》实验指导_实验3:顺序结构程序设计.doc
- 河南中医药大学:《信息技术基础》实验指导_实验4:选择结构程序设计.doc
- 河南中医药大学:《信息技术基础》教学课件_第一讲 课程概述(高志宇).pdf
- 河南中医药大学:《信息技术基础》教学课件_第2章 算法与C语言程序.ppt
- 河南中医药大学:《信息技术基础》教学课件_第3章 数据类型、运算符与表达式.ppt
- 河南中医药大学:《信息技术基础》教学课件_第4章 顺序结构程序设计.ppt
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验三:BIOS与计算机启动.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验四:安装操作系统-Windows.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验五:安装操作系统-Linux.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验六:应用软件的安装.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验七:使用互联网.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验八:学术信息检索.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验九:文档处理.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验十一:多媒体应用.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验十:电子表格.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验十二:让数据说话.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导书)2018级本科班.pdf
- 河南中医药大学:《信息管理与信息系统专业导论》课程教学资源(实验指导)实验一:实现虚拟化.pdf