代码改变世界

泛型约束

2015-02-27 10:20  天穹维都  阅读(168)  评论(0)    收藏  举报

一共有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
    { 
    }