在C#中,将接口列表强制转换为对象列表的推荐方法是什么

本文关键字:列表 对象 是什么 方法 转换 接口 | 更新日期: 2023-09-27 18:24:37

我有返回IVehicle接口的数组的代码

  IEnumerable<IVehicle> allVehicles = GetAllVehicles();

我知道所有这些物体都是汽车物体。铸造的正确方法是什么

IEnumerable<IVehicle>

IEnumerable<Car>

因为我需要将这些传递到另一个需要<Enumerable<Car> 的函数中

在C#中,将接口列表强制转换为对象列表的推荐方法是什么

您可以这样投射:

var allCars = allVehicles.Cast<Car>();

我不确定这是否真的是需要的,但可以使用Linq扩展方法来完成,如下所示。

IEnumerable<Car> Cars = allVehicles.Cast<Car>();

但是,如果allVehicles中的一个成员是而不是Car,则会引发异常;如果需要的话,这可以通过以下方式来规避。

IEnumerable<Car> Cars = allVehicles.OfType<Car>().Cast<Car>();