C#如何显示对象列表,如:

时间:2018-02-01 19:44:24

标签: c# list

我正在尝试显示父类的两个子类的列表:

List<Geschenk> GeschenkListe = new List<Geschenk>
{
    new GeschenkKom(1,"PC-Spiel The Moment Of Silence","House Of Tales"),
    new GeschenkKom(2, "PC-Spiel Syndicate", "BullFrog"),
    new GeschenkKom(3, "PC-Spiel Syndicate Wars", "BullFrog"),
    new GeschenkKom(4, "PC-Spiel The Longest Journey", "FunCom"),
    new GeschenkKom(5, "PC-Spiel The Longest Journey: Dreamfall", "FunCom"),
    new GeschenkBas(6, "Weihnachtsstern", 1),
    new GeschenkBas(7, "Etui", 2),
    new GeschenkBas(9, "Weihnachtspyramide", 3),
    new GeschenkBas(10, "Kalender", 1)
};
GeschenkListe.Add(new GeschenkKom(11, "PC-Spiel The Moment Of Silence", "House Of Tales"));

我知道我创建了什么,但我不知道它是如何正确命名的,或者我如何输出它。我试过了:

foreach(Object f in Geschenkliste)
{
    Geschenkliste(f).Ausgeben();
}

我用Geschenk而不是Object尝试了它无济于事。 Geschenk是GeschnekKom和GeschenkBas的父级。 有人能帮助我吗?

1 个答案:

答案 0 :(得分:7)

你可以试试这个:

foreach(var item in Geschenkliste)
{
    item.Ausgeben();
}

从代码中可以推断出,您只是尝试在Ausgeben中的每个对象上调用一个名为Geschenkliste的方法。因此,通过使用上面的foreach语句,您可以这样做。您隐式声明(使用var关键字)item的类型。在编译时,它将替换为Geschenk,这是其引用存储在列表中的项的类型。换句话说,上述foreach语句等同于以下语句:

foreach(Geschenk item in Geschenkliste)
{
    item.Ausgeben();
}
  

为什么声明item Object类的类型不起作用?

因为方法Ausgeben是在类Geschenk上定义的,而不是在System.Object上定义的, // Slideshow Background. (function() { // Settings. var settings = { // Images (in the format of 'url': 'alignment'). images: { 'images/4.jpg': 'center', 'images/5.jpg': 'center', 'images/3.jpg': 'center' }, // Delay. delay: 6000 }; ... 是.NET Framework中所有类型的基类(Object) 。