索引超出了数组错误的范围(C#)

时间:2016-02-03 07:04:35

标签: c# arrays for-loop indexoutofboundsexception

我有以下代码从Listbox获取值。我选了三位老师。当'i'值达到3时,它显示'索引超出数组范围'错误

    string selectedTeachers = Request["SelectedTeachersList"];
    int[] teachers_ID = Array.ConvertAll(selectedTeachers.Split(','), int.Parse);
    for (int i = 0; i <= teachers_ID.Length; i++)
    {
      int Id = teachers_ID[i];
    }

3 个答案:

答案 0 :(得分:5)

数组是基于零的索引,数组中的第一个元素将具有零索引,并且最后一个元素的数量小于数组的大小,因此它必须小于arry的长度。

for (int i = 0; i < teachers_ID.Length; i++)
  

C#数组是零索引;也就是说,数组索引从零开始。

详细了解MSDN Arrays Tutorial

中的数组

答案 1 :(得分:2)

你应该做

for (int i = 0; i < teachers_ID.Length; i++)

(小到和小或等于运营商)

如果一个数组有10个元素,你可以从索引0到9访问它们。因此,当i == 10时,for子句应该退出。在你的代码中,i == 10仍然执行然后你显然得到了一个异常。

答案 2 :(得分:1)

在这里使用foreach这很简单

foreach(int i in teachers_ID)
    int Id = i;

在这种情况下,您无需担心数组中的元素数量。 你得到的索引超出了数组的范围。因为错误 C#数组是零索引。