首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何输出列表项的成员?

如何输出列表项的成员?
EN

Stack Overflow用户
提问于 2014-12-08 16:03:24
回答 4查看 148关注 0票数 1

我是C#和.NET的新手。所以,我有一个包含对象的集合

代码语言:javascript
复制
private List<object> trains = new List<object>();
...
trains.Add(trains[0]);
trains.Add(trains[1]);
trains.Add(trains[2]);
trains.Add(trains[3]);
trains.Add(trains[4]);

在后面的代码中,我必须输入集合中的所有元素--我正在尝试类似的方法,但它不起作用

代码语言:javascript
复制
public void Display()
{
    ...
    for (int i = 0; i<trains.Count; i++)
    {
        Console.WriteLine(trains[i].Number); 
        Console.WriteLine(trains[i].Destination);
    } 
}

请帮帮我,我真的不知道怎么把它输入到控制台。我阅读了有关“列表”的Microsoft文档,但是:(

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-08 16:07:23

你有一个对象列表。object类没有这些成员(NumberDestination)。如果您想要访问它们,您需要将对象转换为您的类型,或者有一个Train列表而不是object

票数 3
EN

Stack Overflow用户

发布于 2014-12-08 16:07:54

目前,您正在将对象存储在List<object>中,因为您的类(可能命名) Train继承了Object,因此可以将其对象存储在object中。您需要List<Train>,然后可以访问每个成员属性,例如:

代码语言:javascript
复制
private List<Train> trains = new List<Train>();

如果出于某种原因可以这样做,则必须将对象显式转换为Train,如下所示:

代码语言:javascript
复制
Console.WriteLine(((Train)(trains[i])).Number); 
票数 2
EN

Stack Overflow用户

发布于 2014-12-08 16:09:21

假设

代码语言:javascript
复制
class Train
{
    public int Number { get; set; }
    public string Destination { get; set; }
}

你在做这样的事情:

代码语言:javascript
复制
var t1 = new Train();
t1.Number = 1;
t1.Destination = "somewhere";
var t2 = new Train();
t2.Number = 2;
t2.Destination = "somewhereelse";
trains.Add(t1);
trains.Add(t2);

而不能使用以下方法输出:

代码语言:javascript
复制
Train train;
foreach(object t in trains)
{
    if ((train = t as Train) != null)
    {
        Console.WriteLine(t.Number); 
        Console.WriteLine(t.Destination);
    }
}

使用对象列表的优点是可以将“任何东西”放在那里。不仅仅是“火车”。但是正如@Chris所指出的,foreach不过滤,所以您必须自己过滤它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27361905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档