gpt4 book ai didi

c# - 遍历列表并删除项目的正确方法

转载 作者:行者123 更新时间:2023-11-30 14:51:12 24 4
gpt4 key购买 nike

我编写了一个函数来遍历列表并在满足某些条件时删除列表项。我的程序在上面崩溃了,过了一会儿我得出结论,外层的 for 循环遍历了列表中的所有项目。在相同的例程中,项目列表可以变短。

 // Lijst is a list of a struct that contains a value .scanned and .price

for (int i = 0; i < Lijst.Count; i++)
{
if (Lijst[i].scanned == false)
{
// (removed deletion of list item i here)
if (Lijst[i].price > (int)nudMinimum.Value)
{
Totaal++;
lblDebug.Text = Totaal.ToString();
}
Lijst.RemoveAt(i); //<-moved to here
}
}

现在我想知道在没有出现索引超出范围错误的情况下这样做的正确方法是什么。

最佳答案

为什么不直接List<T>.RemoveAll()

https://msdn.microsoft.com/en-us/library/wdka673a(v=vs.110).aspx

在你的情况下

  Lijst.RemoveAll(item => some condition);

例如

  // Count all the not scanned items each of them exceeds nudMinimum.Value
lblDebug.Text = Lijst
.Where(item => !item.scanned && item.price > (int)nudMinimum.Value)
.Count()
.ToString();

// Remove all not scanned items
Lijst.RemoveAll(item => !item.scanned);

关于c# - 遍历列表并删除项目的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35057865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com