gpt4 book ai didi

c# - List.RemoveAt(index) 是如何工作的?

转载 作者:行者123 更新时间:2023-11-30 18:52:27 37 4
gpt4 key购买 nike

假设我有一个列表,消息,包含三个项目。我不想遍历它们并一次删除一个项目。

for (int i = 0; i < messages.Count; i++)
{
messages.RemoveAt(i);
}

(我删除了很多不相关的代码)

第一次迭代后剩余的消息会怎样?它们是否已移至另一个索引,或者我可以这样做以删除所有三条消息吗?

谢谢

最佳答案

你移除的索引后面的所有元素的索引都会递减。如果你想在你的循环中避免这种情况,让它反向运行(从最高索引到最低索引删除)。

for (int i = messages.Count - 1; i >= 0; i--)
{
messages.RemoveAt(i);
}

或者只是使用

messages.Clear()

一次删除所有元素而不关心任何索引。

如果您只想清除列表,使用 Clear 也更有效,因为它是一个 O(n) 操作。 RemoveAt 也是 O(n),但在另一个 O(n) 循环中,这使得它成为 O(n^2) - 在您的示例中提到 3 个元素并不重要,但在谈论时更大的列表肯定会有所作为。

关于c# - List.RemoveAt(index) 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22535930/

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