带有1个元素的数组导致for循环出错

时间:2012-12-11 15:37:34

标签: c# for-loop

我在我的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,用户只能输入一个值。在这种情况下,它只需要运行一次。

3 个答案:

答案 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.Lengthtemplate[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++) {....}