0

处理一维数组非常简单。但是我们如何避免在每行(锯齿状数组)上具有不同长度的二维数组中测试超出范围的位置?

这是我的代码(如果有人想测试):

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;
}
4

1 回答 1

2

这没有什么神奇之处——只需检查长度并避免索引超出该值减一,就像使用一维数组一样。

你的代码看起来很乱,你只是想像这样循环数组吗?

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;
}
于 2013-09-23T13:52:20.663 回答