2.2接口约束
为了规定某个数据类型必须实现某个接口,需要声明一个接口约束(interface constraint).有了这种约束之后,甚至不需要执行类型转换,就可以调用一个显示的接口成员实现....编译器会确保每次使用Binary类的时候,都必须指定一个实现了IComparable接口的类型参数.
2.3 struct/class 约束
另一个重要的泛型约束是将类型参数限制为一个值类型或者一个引用类型....编译器不允许在一个约束中将System.ValueType指定成基类.相反,C#提供了特殊的语法,这种语法同时适用于引用类型.在这种语法中,不是为T指定一个基类.相反,只需要指定关键字struct或者...,都可以指定任意数量的接口作为约束,但基类约束只能指定一个,因为一个类可以实现任意数量的接口,但肯定只能从一个类继承.每个新约束都在一个以逗号分隔的列表中声明,约束列表跟在泛型类型名称和一个冒号之后.如果有多个类型参数...,那么每个类型名称的前面都要使用一个where关键字.如下事例,EntityDictionary类包含两个类型参数:Tkey和TValue.TKey类型参数有两个接口约束,而TValue类型参数有一个基类约束