提问人:Ehab Nasir 提问时间:11/2/2023 更新时间:11/2/2023 访问量:49
如何循环访问包含对象的列表?c#
How do I iterate through a list containing objects? c#
问:
我创建了一个列表来存储来自另一个类的对象。存储在我的列表中的每个对象都有一个名称和一个整数。我想知道我是否可以遍历我的列表并显示每个对象的名称。如果我将 i 的类型更改为 VAR 或动态,它会说它超出了范围。
public List<InventoryHandling> Inventory = new List<InventoryHandling>();
public void inventorySelect()
{
Inventory[0] = new InventoryHandling("Potion", 4);
foreach(int i in Inventory)
{
Console.WriteLine(Inventory[i].Name);
}
}
答:
6赞
Joel Coehoorn
11/2/2023
#1
首先,这一行是错误的:
Inventory[0] = new InventoryHandling("Potion", 4);
问题是索引引用了列表中的第一项,但(大概)此时列表还没有任何空间。索引位置不存在,并且 C# 不允许通过分配给下一个索引来追加到列表。相反,当您想要将新项添加到列表中时,您应该调用它的方法:[0]
[0]
.Add()
Inventory.Add(new InventoryHandling("Potion", 4));
现在我们有一个包含一些内容的列表,我们可以谈谈如何迭代它。就像追加一样,您不会使用带有循环的索引:foreach
foreach(InventoryHandling ih in Inventory)
{
Console.WriteLine(ih.Name);
}
如果你真的想使用索引,你可以用一个循环来做:for
for(int i = 0; i < Inventory.Length; i++)
{
Console.WriteLine(Inventory[i].Name);
}
评论
0赞
Joel Coehoorn
11/2/2023
很好奇为什么这被否决了。
评论
int
inventory
Inventory[0] = new InventoryHandling("Potion", 4);
仅当列表中已存在可以替换的项目时,这才有效。你可能想上榜吗?.Add()