我是C#和.NET的新手。所以,我有一个包含对象的集合
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]);在后面的代码中,我必须输入集合中的所有元素--我正在尝试类似的方法,但它不起作用
public void Display()
{
...
for (int i = 0; i<trains.Count; i++)
{
Console.WriteLine(trains[i].Number);
Console.WriteLine(trains[i].Destination);
}
}请帮帮我,我真的不知道怎么把它输入到控制台。我阅读了有关“列表”的Microsoft文档,但是:(
发布于 2014-12-08 16:07:23
你有一个对象列表。object类没有这些成员(Number和Destination)。如果您想要访问它们,您需要将对象转换为您的类型,或者有一个Train列表而不是object。
发布于 2014-12-08 16:07:54
目前,您正在将对象存储在List<object>中,因为您的类(可能命名) Train继承了Object,因此可以将其对象存储在object中。您需要List<Train>,然后可以访问每个成员属性,例如:
private List<Train> trains = new List<Train>();如果出于某种原因可以这样做,则必须将对象显式转换为Train,如下所示:
Console.WriteLine(((Train)(trains[i])).Number); 发布于 2014-12-08 16:09:21
假设
class Train
{
public int Number { get; set; }
public string Destination { get; set; }
}你在做这样的事情:
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);而不能使用以下方法输出:
Train train;
foreach(object t in trains)
{
if ((train = t as Train) != null)
{
Console.WriteLine(t.Number);
Console.WriteLine(t.Destination);
}
}使用对象列表的优点是可以将“任何东西”放在那里。不仅仅是“火车”。但是正如@Chris所指出的,foreach不过滤,所以您必须自己过滤它。
https://stackoverflow.com/questions/27361905
复制相似问题