gpt4 book ai didi

C# 泛型类型转换 List 到 List< BaseType>

转载 作者:行者123 更新时间:2023-11-30 19:20:54 25 4
gpt4 key购买 nike

我如何输入 List<Car>List<MyBaseClass> ,在我的代码实例中,List 将作为一个对象(程序要求不是故意的),通过这样做我将检索 vehicleId..

 public Form1()
{
List<Car> lstCar = new List<Car>();
lstCar.Add(new Car() { Make = "tootay", Model = "camry", VechicleId = 1 });
lstCar.Add(new Car() { Make = "honda", Model = "civic", VechicleId = 2 });
VehicleConverter(lstCar);
}
public void VehicleConverter(object obj)
{
//Want to typecast it to List<MyBaseClass>
}
}

public class MyBaseClass
{
public int VechicleId { get; set; }
}

public class Car:MyBaseClass
{
public string Make { get; set; }
}

public class Bike : MyBaseClass
{
public int CC { get; set; }
}

最佳答案

这是不可能的。

如果可能,您将能够编写以下内容:

List<Car> carList = new List<Car>();
List<BaseClass> baseList = (List<BaseClass>)carList;
baseList.Add(new Bike()); //I just put a Bike into a List<Car>!

备选方案:

  • 声明列表为List<BaseCLass>
  • 转换为非泛型 IList (不推荐)
  • 转换为 IEnumerable<BaseClass> , 使用 .Net 4 的协方差
  • 传递列表的打印副本:

    VehicleConverter(lstCar.ConvertAll(c => (BaseClass)c));

关于C# 泛型类型转换 List<T> 到 List< BaseType>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4812314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com