使用 list 方法可以删除一段连续位置的元素。调用该方法时,传入起始索引和要删除的元素数量即可,例如 list.removerange(1, 3) 会删除从索引 1 开始的 3 个元素。

RemoveRange 的索引与计数参数如何确定?
起始索引必须是有效的非负整数,且不能超过列表当前长度;计数必须大于零,且起始索引加上计数不能超过列表长度,否则会抛出 ArgumentOutOfRangeException。例如,若列表长度为 5,想删除最后两个元素,起始索引为 3,计数为 2,即 list.RemoveRange(3, 2)。

using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var list = new List<int> { 10, 20, 30, 40, 50 };
Console.WriteLine("原始列表: " + string.Join(", ", list));
// 删除从索引 1 开始的 2 个元素(即 20 和 30)
int startIndex = 1;
int count = 2;
list.RemoveRange(startIndex, count);
Console.WriteLine("删除后列表: " + string.Join(", ", list));
}
}
</int>
预期输出: 原始列表: 10, 20, 30, 40, 50 删除后列表: 10, 40, 50
删除连续元素后,后续元素的索引如何变化?
删除操作会立即调整列表结构,被删除位置之后的所有元素向前移动,索引值相应减小。例如,删除索引 1 处的元素后,原索引 2 的元素变为新索引 1。这种即时更新意味着在循环中删除元素时需格外小心,避免跳过或重复处理。

using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var list = new List<string> { "A", "B", "C", "D", "E" };
Console.WriteLine("原始列表: " + string.Join(", ", list));
// 删除从索引 2 开始的 2 个元素(即 "C" 和 "D")
list.RemoveRange(2, 2);
Console.WriteLine("删除后列表: " + string.Join(", ", list));
Console.WriteLine("新索引 'E' 的位置: " + list.IndexOf("E"));
}
}
</string>
预期输出: 原始列表: A, B, C, D, E 删除后列表: A, B, E 新索引 'E' 的位置: 2
如果起始索引等于列表长度会发生什么?
当起始索引等于列表长度时,由于没有元素可删除,且计数必须为正数,此时会直接抛出 ArgumentOutOfRangeException。因为起始索引加计数必然超过列表长度,违反边界约束。例如,长度为 3 的列表,若尝试 list.RemoveRange(3, 1),将触发异常。










