1

我在我的 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]
    }
}

值来自文本框,用户只能输入一个值。在这种情况下,它只需要运行一次。

4

3 回答 3

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++)
于 2012-12-11T15:38:37.950 回答
1

使用...

for (int i = 0; i <= template.Length; i++)

...在最后一次迭代i将等于template.Length. template[template.Length]将始终导致IndexOutOfRangeException. 由于 的最后一个元素template实际上具有 index template.Length - 1,因此您应该改用...

for (int i = 0; i < template.Length; i++)
于 2012-12-11T15:42:47.077 回答
0

从零开始计数,您必须将第一个 for 语句更改为:

for (int i = 0; i < template.Length; i++) {....}
于 2012-12-11T15:41:33.747 回答