2个回答
展开全部
这个异常在代码不规范的情况下很容易出现,数组是有索引的, 如 int[] array = new int[] {1,2,3,} ;
代码写一个int result = arra[4];肯定就超出索引范围。
ArrayList list = new ArrayList();
string str = "123";
for(int i=0; i<3; i++)
{
// 必须添加到集合,然后才能通过list[i]使用集合元素
list.Add(str.Substring(i, 1));
Console.WriteLine(list[i]);
}
扩展资料:
当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。
对某个列建立UNIQUE索引后,插入新记录时,数据库管理系统会自动检查新纪录在该列上是否取了重复值,在CREATE TABLE 命令中的UNIQE约束将隐式创建UNIQUE索引。
参考资料来源:百度百科-索引
展开全部
这个异常在代码不规范的情况下很容易出现,
数组是有索引的, 如 int[] array = new int[] {1,2,3,} ;
你代码写一个int result = arra[4];他肯定就超出索引范围了。
你给的代码并不能准确的判断出来异常具体的发生原因, 因为这个明显是WINFORM的后台代码, 前端的控件、使用数据类型你都没给。
但是凭经验,我猜测你的dgvUserManager是个前端的DataGridView控件,
这个方法是个单元格点击触发的方法,
那么最有可能的情况,就是你的DataGrid有一个自动生成下一行的属性,你没有设置成False。
比如你本来的数据源List<T>有10行, 你绑定给DataGrid了,但是实际前端会生成11行,
第11行是留白的,可以让用户添加, 这也是DataGrid的特性。
但是如果你点击了第11行,也就是自动生成的这个空行。在后台反过来获取用户点击的这个单元格的值, e.RowIndex肯定是11, 因此, List<T>[11]这一行是不存在的,他一共就10行, 所以就会报超出索引的异常了。
winform我不是很了解,WPF中,DataGrid的AutoGenerateRow属性是控制是否自动生成下一行的, Winform应该差不多一样,你找一下, 如果是需要自动生成,那么你后台就要加入判断, 用户是点击的已有数据,还是要新增一行数据
数组是有索引的, 如 int[] array = new int[] {1,2,3,} ;
你代码写一个int result = arra[4];他肯定就超出索引范围了。
你给的代码并不能准确的判断出来异常具体的发生原因, 因为这个明显是WINFORM的后台代码, 前端的控件、使用数据类型你都没给。
但是凭经验,我猜测你的dgvUserManager是个前端的DataGridView控件,
这个方法是个单元格点击触发的方法,
那么最有可能的情况,就是你的DataGrid有一个自动生成下一行的属性,你没有设置成False。
比如你本来的数据源List<T>有10行, 你绑定给DataGrid了,但是实际前端会生成11行,
第11行是留白的,可以让用户添加, 这也是DataGrid的特性。
但是如果你点击了第11行,也就是自动生成的这个空行。在后台反过来获取用户点击的这个单元格的值, e.RowIndex肯定是11, 因此, List<T>[11]这一行是不存在的,他一共就10行, 所以就会报超出索引的异常了。
winform我不是很了解,WPF中,DataGrid的AutoGenerateRow属性是控制是否自动生成下一行的, Winform应该差不多一样,你找一下, 如果是需要自动生成,那么你后台就要加入判断, 用户是点击的已有数据,还是要新增一行数据
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询