我需要一些帮助。我的项目中有2个列表:1个包含5,000个项目listA
,另一个包含10,000个项目listB
。我正在使用for loop
:
for(int j = 5000 - 1; j > 0; j--)
我需要删除listA
中的最后一项,而listB
中,我需要删除最后两项。这个过程是必要的,因为我需要在我的软件中优化内存。
我非常感谢任何帮助谢谢
我试图这样做,但它不起作用:
listA.RemoveAt(j);
listB.RemoveAt(9999 - i + 1);
listB.RemoveAt(9999 - i );
答案 0 :(得分:3)
删除最后一项
listA.RemoveAt(listA.Count - 1)
对于最后两项,只需执行两次。你应该检查计数是否已经为0,否则你会得到一个例外。
答案 1 :(得分:0)
由于j
似乎总是等于listA
中最后一项的索引,2 * j + 1
始终等于listB
中最后一项的索引。所以你可以使用 / RemoveAt
:
listA.RemoveAt(j);
listB.RemoveRange(2 * j, 2);
此外,如果内存管理是一个大问题,您可能需要考虑通过设置RemoveRange
一段时间后缩小列表(请注意,这可能会对性能产生影响,因此您应该过于急切地避免这样做)。 / p>
listA.Capacity = j;
listB.Capacity = 2 * j;