我在学习C#时 参考果壳中的C# 5.0 一书
书中谈到了泛化约束的问题时 说道 “基类约束或接口约束规定类型参数必须是某个类的子类或实现特定类或接口。” 然后讲了一个例子:
这个是框架中定义的泛化接口IComparable<T>
public interface IComparable<T>
{
int CompareTo(T other);
}
如果other 比 this 大compareTo方法就会返回正值。
static T Max<T> (T a,T b) where T : Icomparable<T>
{
return a.CompareTo(b) > 0? a:b;
}
int z = Max(5,10); // 10
string last = Max("ant","zoo"); //zoo
由于我不是很理解上面说道的
“基类约束或接口约束规定类型参数必须是某个类的子类或实现特定类或接口。”
所以不是很懂这个例子想表达什么,为什么不可以直接实现这个接口,一定要用接口约束呢?
我试过直接实现接口,但是IDE会报错,不是很懂,还是请诸位来帮一手吧。
里的where部分是接口约束,T必须实现
Icomparable<T>
接口。为什么要这个约束?因为Max的参数a要支持CompareTo方法,所以a必须实现Icomparable<T>接口。