如何测试二维数组的边界,以避免 indexOutOfRangeException (C#)
本文关键字:indexOutOfRangeException 何测试 测试 二维数组 边界 | 更新日期: 2023-09-27 18:32:29
处理一个维度的数组非常简单。但是,我们如何避免在每行(交错数组)上具有不同长度的二维数组中测试超出范围的位置呢?
这是我的代码(如果有人想测试):
static void Main(string[] args)
{
object[][] x = weirdReturn();
int k = 0;
while(x[0][k] != null) //THIS CODE PRODUCES THE EXCEPTION
{
for(int i = 0; i< x[k].Length; i++)
{
Console.Write("{0} ", x[k][i]);
}
Console.WriteLine("");
k++;
}
}
static object[][] weirdReturn()
{
DateTime d = new DateTime();
d = DateTime.Now;
object[] a2 = { 'X', 1.79, d, 100 };
object[] a1 = { 0, 'a', "objectX" };
object[][] retVal = new object[2][];
retVal[0] = a1;
retVal[1] = a2;
return retVal;
}
这没有什么魔术 - 只需检查长度并避免索引超过该值减一,就像使用一维数组一样。
你的代码看起来很乱,你只是想像这样遍历数组吗?
static void Main(string[] args)
{
object[][] x = weirdReturn();
for (int i = 0; i < x.Length; i++)
{
for (int j = 0; j < x[i].Length; j++)
{
Console.Write("{0} ", x[i][j]);
}
Console.WriteLine("");
}
}
static object[][] weirdReturn()
{
DateTime d = new DateTime();
d = DateTime.Now;
object[] a2 = { 'X', 1.79, d, 100 };
object[] a1 = { 0, 'a', "objectX" };
object[][] retVal = new object[2][];
retVal[0] = a1;
retVal[1] = a2;
return retVal;
}