1. 基本概念
所谓泛型,就是创建使用通用(而不是特定)类型的类或方法。
泛型主要的改进方面:
- 代码复用。泛型类可以用户任何类型
- 性能:减少了装箱拆箱过程中的性能损耗
- 类型安全:如传统的ArrayList可以把任意对象作为参数放在其Add方法中。编译器不考虑这些,所以集合中提取对象时,除非强制类型转换失败,否则我们不知道出了问题。而泛型有内置的类型安全,如果进出泛型集合类时违反了类型检查过则,编译器就会报告错误。
- 易于阅读
所有泛型集合都在System.Collection.Generic中。
2. 泛型约束
- 什么是泛型约束?
简而言之,泛型约束主要是对泛型所接受的参数的一些特性进行限制。 - 为什么要泛型约束?
更好地控制类型安全 - 怎么实现泛型约束?(通过5种不同的泛型约束)
○ 值类型约束:要求泛型参数必须是值类型,例如int,short以及自定义的stuct等
public class MyClass2<T>
where T : struct//这个泛型类只接受值类型的泛型参数
{
}
○ 引用类型约束:要求泛型参数必须是引用类型,例如string,object,以及自定义的class
public class MyClass<T>
where T:class//这个泛型类只接受引用类型的泛型参数
{
}
○ 构造函数约束:要求泛型参数必须有构造函数
public class MyClass3<T>
where T : new()
{
}
○ 接口约束:要求泛型参数必须实现某个接口
public class MyClass4<T>
where T : System.IComparable
{
}
○ 基类约束:要求泛型参数必须继承某个基类
public class MyClass5<T>
where T : Customer
{
}
引自:
http://www.cnblogs.com/stevenxiao/archive/2008/02/21/1076616.html
http://www.cnblogs.com/chenxizhang/archive/2008/09/18/1293680.html