C#IndexOutOfRangeException原因不明

时间:2015-04-30 06:56:37

标签: c# indexoutofrangeexception

我得到一个奇怪的索引超出范围异常。

这是我的代码段:

string[] st2 = **An Array of up to 10**;

// If not enough in st2, add from st
if (st2.Length < 10)
{
    string[] st = **An Array of up to 10**;
    try
    {
        int index = 0;
        for (int i = st2.Length - 1; i < 10; i++)
        {
            st2[i] = st[index];
            index = index + 1;
        }%%%
    }
    catch (IndexOutOfRangeException)
    {

    }
}

我放置了try和catch,看看我是否可以简单地忽略异常,但是这不起作用。

在%%%处抛出异常。有任何想法吗?我已经进入调试只是为了确保它不是任何一个数组,并且在这两种情况下,i和index都是可以接受的。 (即使st确认为10长度,也会抛出指数= 1)

2 个答案:

答案 0 :(得分:0)

变量st只有1项,见以下行:st3 [i] = st [index];。我从0到9,当i = 1时发生异常。

答案 1 :(得分:0)

您的数组正在提供此异常。因为它的大小小于10.您需要将st2st复制到大小为10的新数组。稍后将其分配给st2

string[] st2 = **An Array of up to 10**;

// If not enough in st2, add from st
if (st2.Length < 10)
{
    string[] st = **An Array of up to 10**;
    try
     {
        string[] st3 = new string[10];
        Array.Copy(st2, st3, st2.Length); 
        int index = 0;
        for (int i = st2.Length; i < 10; i++)
        {
            st3[i] = st[index];
            index = index + 1;
        }
        st2 = st3;
     }
     catch (IndexOutOfRangeException)
     {

     }
    }