C#一次从列表中删除一项

时间:2018-08-18 11:05:28

标签: c#

我正在尝试从列表中删除一项,直到列表为空。我的代码仅成功从列表中删除了一项,然后导致错误。我该如何解决?

public void ReleaseAllAnimals()
{
    int i = 0;
    foreach (var value in _farmAnimals)
    {
        _farmAnimals.RemoveAt(i);
        Console.WriteLine(value.Species());
        i++;
    }
}

enter image description here

2 个答案:

答案 0 :(得分:0)

枚举时不应修改集合。当您要删除元素时,应使用for循环而不是索引器,以免遇到问题。

您可以按相反的顺序遍历列表,并从结尾项中逐个删除:

for(int i=_farmAnimals.Count -1; i >= 0; i--)
{
      var species = _farmAnimals[i].Species(); // get species of current item
      _farmAnimals.RemoveAt(i); // remove from list
      Console.WriteLine(species); // display it
}

答案 1 :(得分:0)

您可以使用RemoveAt(0)

从列表的第一项中删除每一项。

将代码更改为此:

int size = _farmAnimals.Count;
for(int i = 0; i < size; i++)
{
    var s = _farmAnimals[0].Species();
    Console.WriteLine(s);
    _farmAnimals.RemoveAt(0);
}

希望对您有帮助