C# 利用泛型 where 解决 List 项无法转换的问题

假设有类:

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。

你可能感兴趣的