假设有类:
public class Car : ICar { }
还有一个类有方法:
public class CarHelper { public static void Remove(List<ICar> cars) { // ... } }
如下调用:
List<Car> cars = new List<Car>(); CarHelper.Remove(cars);
以上是通不过编译的,因为 List<Car> 无法转换成 List<ICar>。
解决办法一
将 List<ICar> 改成 ICar[] 数组。
解决办法二
我就要 List 类型,怎么办?利用泛型和 where。
public static void Remove<T>(List<T> cars) where T : ICar
如上,使用泛型,完全不需要拆箱操作,同时利用 where 约束了 T 必须兼容 ICar。