我创建了一个列表来存储来自另一个类的对象。存储在我的列表中的每个对象都有一个名称和一个整数。我想知道是否可以迭代列表并显示每个对象的名称。如果我将 i 的类型更改为 VAR 或 Dynamic,它会说超出范围。
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);
}
}
首先,这一行是错误的:
Inventory[0] = new InventoryHandling("Potion", 4);
问题是
[0]
索引引用列表中的第一项,但此时列表还没有 any 空间。索引 [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);
}