使用 list 方法并指定索引为 0、数量为 n 即可删除前 n 个元素。该操作会直接修改原列表,将剩余元素向前移动,时间复杂度为 o(n + m),其中 m 是剩余元素的数量。

如何安全地处理 N 大于列表长度的情况?
当请求删除的数量 N 超过当前列表的实际长度时,RemoveRange 会抛出 ArgumentOutOfRangeException。为了避免程序崩溃,需要在调用前检查列表的 Count 属性,并将实际要删除的数量限制在有效范围内。

using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
int n = 10; // 尝试删除10个,但只有5个
if (n > 0)
{
int countToRemove = Math.Min(n, numbers.Count);
numbers.RemoveRange(0, countToRemove);
}
Console.WriteLine(string.Join(", ", numbers)); // 输出:
}
}</int></int>
删除前N个元素后,原列表的容量(Capacity)会发生变化吗?
执行 RemoveRange 后,列表内部的数组大小(即 Capacity)通常不会自动缩小,它仍然保持原来的分配大小,只是 Count 属性减少了。这意味着内存占用没有立即释放,但可以通过调用 TrimExcess() 方法来强制调整内部数组大小以匹配当前的元素数量,从而节省内存。










