San*_*zar 0 .net c# foreach types list
因此,假设我们有一个名为Car的类和其他三个类(Opel,Volkswagen和Peugeot)继承Car的信息,但每个类都有一个特定的变量.
所以我创建了一个新的汽车列表,我在其中添加了这三种类型的CarOpel..etc.
Opel CarOpel = new Opel(parameters);
Run Code Online (Sandbox Code Playgroud)
等等...
List<Car> Cars = new List<Car>();
Car.Add(CarOpel);
Run Code Online (Sandbox Code Playgroud)
等等...
当我使用"foreach"语句时,如何从每个类访问这些特定变量
foreach ( Car car in Cars )
{
// how to convert *car* in *Opel* , *Volkswagen* or *Peugeot* to get that specific variable?
}
Run Code Online (Sandbox Code Playgroud)
?
var opelCars = cars.OfType<Opel>()
foreach ( Opel car in cars.OfType<Opel>())
{
}
Run Code Online (Sandbox Code Playgroud)
其他解决方案是使用is关键字
foreach ( Car car in cars)
{
if(car is Opel)
{
var opel = (Opel)car;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要向下投影汽车以便做某事,可能会表明您的继承层次结构错误或您的方法不在适当的位置.它可能应该是Car类中的虚方法,它在派生类中被重写.还要考虑阅读访客模式.
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |