An unhandled exception of type 'System.IndexOutOfRangeEx
本文关键字:System IndexOutOfRangeEx type unhandled exception of An | 更新日期: 2023-09-27 18:19:31
这是我的程序:(
private void btnPhone_Click(object sender, EventArgs e)
{
string[,] numbers = new string[5, 1];
numbers[0, 0] = "Pedro";
numbers[0, 1] = "4633585";
numbers[1, 0] = "Juan";
numbers[1, 1] = "6364799";
numbers[2, 0] = "Pepe";
numbers[2, 1] = "7172572";
numbers[3, 0] = "Lucia";
numbers[3, 1] = "8885200";
numbers[4, 0] = "Marta";
numbers[4, 1] = "7171700";
for (int i = 0; i <= 5; i++)
{
if (numbers[i, 0] == txtName.Text)
{
txtNumber.Text = numbers[i, 1];
}
}
}
for (int i = 0; i < numbers.GetLength(0); i++)
{
if (numbers[i, 0] == txtName.Text)
{
txtNumber.Text = numbers[i, 1];
}
}
至少通过这种方式,您没有明确声明for循环应该完成多少次迭代。谨慎行事,避免出现这样的情况(您可能希望在将来添加另一个元素或删除一个元素)。你现在这样做的方式是不好的做法,如果不仅仅是为了捣乱,你还必须通过任何更改来保持数组大小和循环的同步。
它应该是new string[5, 2]
。并且在循环中,它应该是i<5
而不是i<=5
。
您没有numbers[5, i]
,因为c#中的数组是零对齐的,所以当您尝试访问它时,它超出了范围。尝试使用
for(int i = 0; i < 5; i++)
数组的第二个维度只有一个元素,但您尝试访问两个元素。
numbers = new string[5, 1];
numbers[0, 0] = "Pedro";
numbers[0, 1] = "4633585";
尝试
numbers = new string[5, 2];
相反。