泛型是.NET Framework 2.0中新增的,它主要有三个方面的好处:类型安全性、代码复用、减少装箱和拆箱的成本。关于泛型的基本概念,如果您不清楚,可以参考MSDN。
这篇博客总结了一个特殊的部分:泛型约束
- 什么是泛型约束?
简而言之,泛型约束主要是对泛型所接受的参数的一些特性进行限制
- 为什么要泛型约束?
主要是更好地控制类型安全,当然这个说话是有些争议的,反对者说这样做是不是就会丧失泛型本来设计用来提高类型复用的灵活性。(关于这一点,从一定意义上说:是的)
我记得在数据库设计中有一个重要的议题就是保证数据的完整性,里面最基础的手段也是使用约束。我认为适当地使用约束将保证我们的工作更加理想地完成。
- 怎么实现泛型约束?
一共有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
{
}***********************************************************************************************
*【Author】:陈希章@中国
*【Date】:2014年01月09日
*【URL】:http://www.cnblogs.com/chenxizhang/archive/2008/09/18/1293680.html
*【Notice】:
*2、请尊重原创的成果,转载和引用请注明作者及出处。
*3、本文必须全文转载和引用,任何组织和个人未授权不能修改任何内容,并且未授权不可用于商业。
*4、本声明为文章一部分,转载和引用必须包括在原文中。
***********************************************************************************************