我得到一个奇怪的索引超出范围异常。
这是我的代码段:
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)
答案 0 :(得分:0)
变量st只有1项,见以下行:st3 [i] = st [index];。我从0到9,当i = 1时发生异常。
答案 1 :(得分:0)
您的数组正在提供此异常。因为它的大小小于10.您需要将st2
和st
复制到大小为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)
{
}
}