C# 什么是“一个”呢;“索引超出范围”;异常,如何修复它?

C# 什么是“一个”呢;“索引超出范围”;异常,如何修复它?,c#,.net,indexoutofrangeexception,C#,.net,Indexoutofrangeexception,我遇到以下错误之一: “索引超出范围。必须为非负且小于集合的大小” “插入索引超出范围。必须为非负且小于或等于大小。” “索引超出了数组的边界。” 这意味着什么?我该如何修复它 另请参见 为什么会发生此错误? 因为您试图使用超出集合边界的数字索引访问集合中的元素 集合中的第一个元素通常位于索引0。最后一个元素位于索引n-1,其中n是集合的大小(它包含的元素数)。如果您试图使用负数作为索引,或者使用大于Size-1的数字,您将得到一个错误 索引数组的工作原理 当您声明这样的数组时: var

我遇到以下错误之一:

  • “索引超出范围。必须为非负且小于集合的大小”
  • “插入索引超出范围。必须为非负且小于或等于大小。”
  • “索引超出了数组的边界。”
这意味着什么?我该如何修复它

另请参见

为什么会发生此错误? 因为您试图使用超出集合边界的数字索引访问集合中的元素

集合中的第一个元素通常位于索引
0
。最后一个元素位于索引
n-1
,其中
n
是集合的
大小(它包含的元素数)。如果您试图使用负数作为索引,或者使用大于
Size-1
的数字,您将得到一个错误

索引数组的工作原理 当您声明这样的数组时:

var array = new int[6]
for (int index = 0; index < array.Length; index++)
{
    Console.WriteLine(array[index]);
}
数组中的第一个和最后一个元素是

var firstElement = array[0];
var lastElement = array[5];
所以当你写作时:

var element = array[5];
您正在检索数组中的第六个元素,而不是第五个元素

通常,您会在如下数组上循环:

var array = new int[6]
for (int index = 0; index < array.Length; index++)
{
    Console.WriteLine(array[index]);
}

注意,
有点相关。。。您可能需要指出,indexer不能用于向列表中添加新项。与数组不同,它只能用于修改现有项。i、 e
var列表=新列表(10);列表[0]=10将引发IndexOutfrange异常
foreach (var element in list)
{
    Console.WriteLine(element.ToString());
}
var list = new List<string>();
list.Add("Zero");
list.Add("One");
list.Add("Two");
Console.WriteLine(list[3]);  // Throws exception.