我在我的for循环中使用数组长度作为测试条件。但是如果数组中只有一个元素,我会收到“索引超出数组范围”错误。我究竟做错了什么?感谢。
string templateList;
string[] template;
string sizeList;
string[] size;
templateList = textBox1.Text;
template = templateList.Split(',');
sizeList = textBox2.Text;
size = sizeList.Split(',');
for (int i = 0; i <= template.Length; i++)
{
for (int j = 0; j < size.Length; j++)
{
//do something with template[i] and size[j]
}
}
值来自textBox,用户只能输入一个值。在这种情况下,它只需要运行一次。
答案 0 :(得分:5)
数组是zero-based
索引,即第一个元素的索引为零。 template [0]指向第一个元素。当您只有一个元素template[1] will refer to second element
不存在时,您可能会获得out of index
例外。
更改
for (int i = 0; i <= template.Length; i++)
要
for (int i = 0; i < template.Length; i++)
答案 1 :(得分:1)
使用...
for (int i = 0; i <= template.Length; i++)
...在最后一次迭代i
上将等于template.Length
。 template[template.Length]
将始终生成IndexOutOfRangeException
。由于template
的最后一个元素实际上具有索引template.Length - 1
,因此您应该使用...
for (int i = 0; i < template.Length; i++)
答案 2 :(得分:0)
从零开始计数,你必须将你的第一个语句更改为:
for (int i = 0; i < template.Length; i++) {....}