【发布时间】:2014-09-24 03:47:12
【问题描述】:
我正在尝试简化这个问题,请耐心等待。我知道如何使用接口,但对于我所从事的工作,我不太清楚如何使用它。这不是 sql 数据库,我可以闭着眼睛睡觉。
我有一个总体通用的一类事物的列表,但在这个列表中是一些属于另一种类型的子元素。例如,汽车......每辆车内还有其他东西,如风格等对象,所以我不认为我可以查看它的界面选项。
public class Cars
{
public List<object> otherThingsAboutCar;
}
List<Cars> allCars = GetAListOfCars();
所以,在这个有限的汽车列表中,我只想要敞篷车。
List<Convertibles> justConvs = HowToGetFrom "allCars".
尽管出于心理理解的目的我尝试对其进行简化,但汽车是敞篷车的指示符实际上是汽车类中的子对象。所以它几乎就像我需要做类似的事情......
foreach( Cars c in allCars )
{
if ( c.otherThingsAboutCar is a convertible )
add this "c" to the List<Convertibles>
}
所以,虽然汽车是一种类型,但我需要在汽车内部寻找另一个特定元素,如果是,只返回那些。如果符合条件,我更喜欢像 IEnumerable 这样的选项来产生返回值,或者只返回提供的类型列表的函数。所以在这种情况下,我知道子组件的类型是 Convertible,但可能还有其他类型,所以我不能将其固定为仅返回 Convertibles 的函数。我研究了泛型并将它们理解为一个级别,但如果在该级别内,我希望子级别是另一个级别,我将如何去做。
希望解释够了,这里有一些示例
Car1
otherThingsAboutCar
Sedan
6-Cyl
Leather
Car2
otherThingsAboutCar
Convertible
8-Cyl
Leather
Car3
otherThingsAboutCar
Convertible
6-Cyl
Leather
Car3
otherThingsAboutCar
Coupe
6-Cyl
Cloth
在这种情况下,我的外部汽车列表有 4 个条目。我想要一个仅包含两个敞篷车的数组(或类似的 Enumerable/List/)。如前所述,我也可能从相同的列表开始,并说我只想要那些具有皮革或 8 缸发动机的产品,因此我想到了泛型,但无法理解它。
【问题讨论】:
标签: c# list generics ienumerable