使用泛型可以定义接口,接口中的方法可以带泛型参数。在链表示例中,就执行了IEnumerable<T>接口,它定义了GetEnumerator()方法,以返回IEnumerator<T>。对于.NET 1.0中的许多非泛型接口,.NET 2.0定义了新的泛型版本,例如IComparable<T>:
public interface IComparable<T>
{
int CompareTo(T other);
}
第5章中的非泛型接口IComparable需要一个对象,Person类的CompareTo()方法才能按姓氏给人员排序:
public class Person : IComparable
{
public int CompareTo(object obj)
{
Person other = obj as Person;
return this.lastname.CompareTo(other.lastname);
}
//...
执行泛型版本时,不再需要将object的类型强制转换为Person:
public class Person : IComparable<Person>
{
public int CompareTo(Person other)
{
return this.lastname.CompareTo(other.lastname);
}
//...