gpt4 book ai didi

c# - 清空所有数组列表数据

转载 作者:可可西里 更新时间:2023-11-01 08:52:15 25 4
gpt4 key购买 nike

为什么下面的代码没有清除所有数组列表数据?

        Console.WriteLine("Before cleaning:" + Convert.ToString(ID.Count));
//ID.Count = 20
for (int i = 0; i < ID.Count; i++)
{
ID.RemoveAt(i);
}
Console.WriteLine("After cleaning:" + Convert.ToString(ID.Count));
//ID.Count = 10

为什么 10 会打印到屏幕上?

也许还有另一个特殊功能,可以删除所有内容?

最佳答案

您实际上只调用了 RemoveAt 10 次。当 i 达到 10 时,ID.Count 也将是 10。您可以通过以下方式解决此问题:

int count = ID.Count;
for (int i = 0; i < originalCount; i++)
{
ID.RemoveAt(0);
}

不过,这是一个复杂度为 O(n2) 的操作,因为从列表开头删除条目涉及复制其他所有内容。

更高效 (O(n)):

int count = ID.Count;
for (int i = 0; i < originalCount; i++)
{
ID.RemoveAt(ID.Count - 1);
}

或等效但更简单:

while (ID.Count > 0)
{
ID.RemoveAt(ID.Count - 1);
}

但是使用 ID.Clear() 可能比所有这些都更有效,即使它也是 O(n)。

关于c# - 清空所有数组列表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2863212/

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