如何迭代包含对象的列表? c#

问题描述 投票:0回答:1

我创建了一个列表来存储来自另一个类的对象。存储在我的列表中的每个对象都有一个名称和一个整数。我想知道是否可以迭代列表并显示每个对象的名称。如果我将 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);
        }
    }
c# list object foreach
1个回答
0
投票

首先,这一行是错误的:

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.