Kyl*_*yle 9 .net c# inheritance
我有几节课:
class Vehicle
{
}
class Car : Vehicle
{
}
Run Code Online (Sandbox Code Playgroud)
我有一个派生类的列表:
IList<Car> cars;
我想将列表转换为其基类,并尝试过:
IList<Vehicle> baseList = cars as IList<Vehicle>;
但我总是得到null.也
cars is IList<Vehicle> evaluates to be false.
Run Code Online (Sandbox Code Playgroud)
当然,如果我执行以下操作,我可以将项目添加到列表中:
List<Vehicle> test = new List<Vehicle> ();
foreach ( Car car in cars )
{
test.Add(car);
}
Run Code Online (Sandbox Code Playgroud)
我得到了我的清单,但我知道必须有更好的方法.有什么想法吗?
Lee*_*Lee 20
IList<Vehicle> vehicles = cars.Cast<Vehicle>().ToList();
Run Code Online (Sandbox Code Playgroud)
或者,您可以避免转换为List,具体取决于您希望如何处理源汽车列表.
Phi*_*ler 11
那种多态性,让你投IList<Car>来IList<Vehicle>是不安全的,因为它会让你插入Truck你的IList<Car>.