泛型约束简介

泛型是.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     {      }
原文地址:https://www.cnblogs.com/luyujie/p/3509181.html