C# IndexOutOfRangeException 不明原因

C# IndexOutOfRangeException unexplained

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

这是我的代码片段:

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,也会在 index = 1 处抛出)

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

您的数组出现此异常。因为它的大小小于 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)
     {

     }
    }