我有一个这样的数组,可以在用户前进时保存查询:
String [,] qArr=new String[2,6];
我为阵列中的这6行中的每一行都设置了一个按钮
以下是我想要做的事情:
如果用户在步骤4(保存按钮4等8个查询),现在点击按钮2,然后我想删除数组中第2行之后的任何查询。
以下是我所做的:
public void remQ(int position) //position is the row starting from 0
{
position=(position+1)*2;
Array.Clear(qArr,position,qArr.Length);
}
错误1:这是我运行时得到的结果:
索引超出了数组的范围
调试显示以下值:
qArr=string[2,6]
d=4
qArr.Length=12
我该如何解决这个问题?
答案 0 :(得分:1)
您是否阅读了https://msdn.microsoft.com/en-us/library/system.array.clear(v=vs.110).aspx以及可能导致该异常的原因?
"索引和长度的总和大于数组的大小。"
您将长度作为数组的总长度传递。除非您从索引0开始,否则您不会清除所有项目。您需要正确计算要清除的项目数:
Array.Clear(qArr,position,qArr.Length-position);