泛型约束

泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型。

利用泛型也可以达到代码重用的目的。

1.泛型类

泛型类的定义与一般类的定义几乎一样,只是它把一些参数用泛型的类型参数来代替。

格式:

修饰符 class 类名<类型参数列表>

{

类体

}

2.泛型方法

泛型方法与普通的方法区别在于使用类型参数声明方法,泛型方法也可以被重载和重写。

例如:

public void GetMax<T>(T t,int a)

{

方法体

}

参数的类型可以是T或其他系统的数据类型。

3.约束

约束是指对泛型类型参数施加限制,用于限制可以传递到该类型参数的类型种类。

a.基类约束

指示编译器泛型类型参数必须派生自特定基类。

格式:修饰符 class 类名<类型参数列表> where 类型参数:基类名

b.接口约束

指示编译器泛型类型参数必须派生自特定接口。

格式:修饰符 class 类名<类型参数列表> where 类型参数:接口名

c.默认构造函数约束

指示编译器泛型类型参数公开了默认的公共构造函数(不带任何参数的公共构造函数)。即无参构造函数是public。

修饰符 class 类名<类型参数列表> where 类型参数 : new()

d:引用/值类型约束

指示翻译器泛型类型参数必须为引用类型或值类型。

格式:修饰符 class 类名<类型参数列表> where 类型参数:struct(或class)

其中ab都是约束了父类或父接口,传递其子类或子接口也是能满足的。

原文地址:https://www.cnblogs.com/xiaoai123/p/8195713.html