一、泛型的概念:
定义:泛型允许我们延迟编写类或方法中的编程元素的数据类型的规范,直到实际在程
序中使用它的时候。也就是说泛型是可以与任何数据类型一起工作的类或方法。模块内高
内聚,模块间低耦合
泛型的使用:当我们的类或方法不需要关注调用传递的实体是什么的时候就可以使用泛型。
可以通过数据类型的替代参数编写类或方法的规范。当编译器遇到类的构造函数或方法的函数调用时,它会生成代码来处理指定的数据类型
注意:
集合中的项允许是 object 型的值,因此可以存放任意类型的值,无法确保存入集合中
的值都是同一类型,而导致在处理时会发生异常。
二、可空类型:
nullable 类型(可空类型),可空类型可以表示其基础值类型正常范围内的值,再加上一个 null 值。
对于引用类型的变量来说,如果未对其赋值,在默认情况下是 Null 值,对于值类型的
变量,如果未赋值,整型变量的默认值为 0。
可空类型的常用方法
泛型的特性:
三、泛型方法:
可以通过类型参数声明泛型方法
如果没有泛型的话,那么每次方法中的参数类型都是固定的,不可以随便更改。
泛型方法的定义:
定义泛型方法需要在方法名和参数列表之间加上<>,并在其中使用 T 来代表参数类型。
注意:
C#中泛型方法中只能使用object类具有的方法。
四、泛型委托:
我们可以通过类型参数定义泛型委托
定义形式如下:
class 类名<T1,T2,…>
{
类的成员
}
五、泛型集合
C# 语言中泛型集合是泛型中最常见的应用,主要用于约束集合中存放的元素
集合中能存放任意类型的值,在取值时经常会遇到数据类型转换异常的情况所以在定义集合时使用泛型集合。
泛型集合中主要使用 List 和 Dictionary<K,V> 。
1、List类
List类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现
IList 泛型接口。
动态数组(ArrayList):它代表了可被单独索引的对象的有序集合。
它基本上可以替代一个数组。但是,与数组不同的是,您可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。它也允许在列表中进行动态内存分配、增加、搜索、排序各项。