在我的应用程序中,教师可以有几个课程,当我排除教师的个人资料时,我必须首先删除他的课程。我正在尝试将此教师的每个class_id
放在int
数组上,以便稍后删除此数组中包含id的所有类。
到目前为止,这是我的代码:
int x = 0;
int[] count = new int[x];
while (reader_SelectedClasses.Read())
{
if(x != 0)
{
x++;
count = new int[x];
}
count[x] = _class.Class_id = reader_SelectedClasses.GetInt16("class_id");
}
这就是
reader_SelectedClasses.Read()
确实
select class_id from tbl_class where user_id = " + id + ";
当我在MySQL上尝试这个时,这就是回归:
但是当我在DAO类上运行代码时,它会给我一个IndexOutOfRangeException。我错过了什么?已经去了here,但不太明白。有人可以解释几个单词,并为此发布和修改代码吗?
答案 0 :(得分:2)
您需要learn how to use a debugger并逐步执行您的计划。
count = new int[x];
放弃count
中的内容并创建一个包含零的新数组。此数组的索引从0到x - 1
。
count[x] = ...
将数组元素设置为索引x
,根据前一行,数组元素超出数组末尾。
您需要在程序开头只设置count = new int[x]
一次,并且仅当x> = 0且x<时才设置count[x] = ...
count.Length。
答案 1 :(得分:1)
您正尝试使用List
获得array
行为
显然,IndexOutOfRangeException
是因为您初始化一个空数组,然后尝试在不存在的单元格中为其添加值。
尝试转换为List<int>
:
List<int> count = new List<int>();
while (reader_SelectedClasses.Read())
{
int classId = _class.Class_id = reader_SelectedClasses.GetInt16("class_id");
count.Add(classId);
}
如果你真的需要一个阵列,你可以这样做:
int[] countArray = count.ToArray()
答案 2 :(得分:0)
您正在获取IndexOutOfRange异常,因为您正在尝试访问超出范围的数组中的元素。
在第一行,你设置x = 1.希望控制器进入while循环,当x为1时,它不会输入if循环并执行下一个语句。但是不允许count [1](x = 1),因为你创建的数组只有一个元素,你可以用count [0]访问。 (数组索引从0开始)