触发“IndexOutOfRangeException”异常通常是因为代码尝试访问不合法的数组索引。在 .NET 中,索引从 0 开始,如果访问数组中不存在的索引位置,就会产生该异常。以下是示例代码和解决办法:
示例一
int[] nums = new int[3];
nums[3] = 4; // 访问了数组中不存在的索引位置,会引发IndexOutOfRangeException异常
解决办法: 数组的最大索引应该是 .Length – 1。 在这种情况下,数组的长度是 3,因此允许访问的最大索引是2。因此,可以通过将代码中的 nums[3] 更改为 nums[2] 来解决问题。
int[] nums = new int[3];
nums[2] = 4; // 访问正确的索引位置
示例二
List<int> numbers = new List<int>() { 1, 2, 3 };
int number = numbers[3]; // 访问了List<int>中不存在的索引位置,会引发IndexOutOfRangeException异常
解决办法:使用List.Count属性来检查有效的索引位置。在上述示例中,List已经包含了3个元素,因此允许的最大索引值为2。可以使用以下代码来检查要访问的索引是否合法:
List<int> numbers = new List<int>() { 1, 2, 3 };
if (numbers.Count > 3)
{
int number = numbers[3];
}
在上述代码中,我们首先检查要访问的索引是否超出了列表的大小,以避免触发IndexOutOfRangeException。