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。您需要将 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)
{
}
}
我收到一个奇怪的索引超出范围异常。
这是我的代码片段:
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。您需要将 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)
{
}
}