一、泛型概述
1. 泛型
1.1 泛型是什么?
泛型(generic)是C#语言2.0和通用语言运行时(CLR)得一个新特性。
1.2 为什么引入泛型?
泛型编程是一种编程范式,他利用“参数化类型”将类型抽象化,从而实现更为灵活的复用。
定义:public void 函数名<T>(ref T 参数1,ref T 参数2)
1.3 泛型的优点
* 提供了一个强类型的编程模式;
* 编译时类型检查减小了运行时转换异常的几率;
* 值类型不再需要装箱操作;
* 缓解了代码膨胀的情况;
* 性能得到提高;
* 减少了内存消耗;
* 代码可读性好;
2. 泛型类、泛型方法
2.1 自定义泛型类
要创建反省类,只需在定义中包含尖括号语法
例:class Mylist<T>;class MyList<T1,T2>;
class 类名<T>
{
public void 方法名(T t1){.........}
}
2.2 Default 关键字
将值置该类型初始值
class MyClass<T>
{
public void Clear(T t1)
{
t1=defult(T);
console.writeline(t1);
}
}
MyClass <int> mc=new MyClass<int>();
mc.Clear(4);
---->输出结果为0(string类型时为null)
3. 泛型参数的约束
在泛型中不能直接比较两个参数的大小,因为两个参数也许为任意不同类型的参数,不能直接比较,应使用CompareTo方法。
static T GetBigger<T>(T x,T y) where T:IComparable
{
if(x.CompareTo(y)>0)//等同于if(x>y),如果x大于y返回1,等于返回0,小于返回-1
{
return x;
}
else
{
return y;
}
}
3.1 约束定义
强迫类型遵守一定的规范。
约束的语法是:where T : constraint1, constraint2
Where是关键字,constraint1、constraint2是约束内容:
4 泛型集合类
泛型类最常见的表现形式就是泛型集合类。
注意:一旦规定了集合泛型类型,集合内的元素一定要严格遵守类型约束!!!