该篇文章是我于2009年6月10日通过自己编写的工具,批量从位于在博客园的博客站点(http://chenxizhang.cnblogs.com)同步而来。文章中的图片地址仍然是链接到博客园的。特此说明! 陈希章原文地址:http://www.cnblogs.com/chenxizhang/archive/2008/09/18/1293680.html原文标题:泛型约束 原文发表:2008/9/18 13:17:00 |
泛型是.NET Framework 2.0中新增的,它主要有三个方面的好处:类型安全性、代码复用、减少装箱和拆箱的成本。关于泛型的基本概念,如果您不清楚,可以参考MSDN。
这篇博客总结了一个特殊的部分:泛型约束
- 什么是泛型约束?
简而言之,泛型约束主要是对泛型所接受的参数的一些特性进行限制
- 为什么要泛型约束?
主要是更好地控制类型安全,当然这个说话是有些争议的,反对者说这样做是不是就会丧失泛型本来设计用来提高类型复用的灵活性。(关于这一点,从一定意义上说:是的)
我记得在数据库设计中有一个重要的议题就是保证数据的完整性,里面最基础的手段也是使用约束。我认为适当地使用约束将保证我们的工作更加理想地完成。
- 怎么实现泛型约束?
一共有5种不同的泛型约束
- 值类型约束:要求泛型参数必须是值类型,例如int,short以及自定义的stuct等
public class MyClass2
where T : struct//这个泛型类只接受值类型的泛型参数
{
}
- 引用类型约束:要求泛型参数必须是引用类型,例如string,object,以及自定义的class
public class MyClass
where T:class//这个泛型类只接受引用类型的泛型参数
{
}
- 构造函数约束:要求泛型参数必须有构造函数
public class MyClass3
where T : new()
{
}
- 接口约束:要求泛型参数必须实现某个接口
public class MyClass4
where T : System.IComparable
{
}
- 基类约束:要求泛型参数必须继承某个基类
public class MyClass5
where T : Customer
{
}
作者:陈希章 出处:http://blog.youkuaiyun.com/chen_xizhang 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |