CLR via C# 接口 泛型接口

C#和CLR所支持的泛型接口为开发人员提供了许多非常出色的功能。

首先,泛型接口提供了出色的编译时类型安全。有的接口定义的方法使用了object参数或object返回类型。在代码中调用这些接口方法时,可传递对任何类型的实例的引用。但这通常不是我们期望的。

CLR via C# 接口 泛型接口

接口方法理想情况下应使用强类型。这正是FCL为什么包含泛型IComparable<in T>接口的原因。

CLR via C# 接口 泛型接口

泛型接口的第二个好处在于,处理值类型时装箱次数会少很多。

泛型接口的第三个好处在于,类可以实现同一个接口若干次,只要每次使用不同的类型参数。

CLR via C# 接口 泛型接口

CLR via C# 接口 泛型接口

接口的泛型类型参数可标记为逆变和协变,为泛型接口的使用提供更大的灵活性。