C#多维数组迭代

时间:2013-02-07 17:52:21

标签: c# arrays multidimensional-array iteration

我是C#的新手并且正在研究数组。

假设:

int[][] myJagArray = new int[5][];

为什么以下打印j(System.Int32 [])的 类型 ,而不是每个j的内容?

foreach (int[] j in myJagArray)
{
    Console.WriteLine("j : {0}",j);
}

5 个答案:

答案 0 :(得分:5)

因为Array.ToString()没有返回数组的内容,所以它返回类型名称,Console.WriteLine隐式调用您作为参数发送的每个对象上的ToString()

这不考虑数组是多维数组的一部分,它只是CLR开发人员选择(或者更确切地说,选择而不是)实现{{}的方式。 1}} ToString()

答案 1 :(得分:1)

它打印来自ToString()方法的输出,因为在这种情况下,j是一个数组,它使用Object ToString实现,并且该行为正在打印它的类型。

在这里您可能想要做的事情:

foreach (int[] j in myJagArray)
{
    StringBuilder sb = new StringBuilder("j : ");

    foreach (int k in j)
    {
        sb.append("[").append(k).append("]");
    }

    Console.WriteLine(sb.Tostring());
}

答案 2 :(得分:1)

您正在打印int的数组。

尝试以下操作来打印数组中的第一个值:

Console.WriteLine("j : {0}",j[0]);

要打印出整个内容,您可能需要尝试以下操作:

foreach (int[] j in myJagArray)
{
    foreach (int i in j)
    {
        Console.WriteLine("i : {0}",i);
    }
}

答案 3 :(得分:0)

你应该这样做

for(int i=0;i<5;i++)
    for( int j=0;j<5;j++)
        print(myjagarray[i][j].tostring());

答案 4 :(得分:0)

使用Console.WriteLine输出值时,实际上是第一次对该值调用ToString(),而Array.ToString()不返回值,而是返回类型。如果要输出j的值,则需要运行第二个循环:

foreach (int[] j in myJagArray)
{
    Console.Write("j: ");
    foreach (int i in j)
    {
        Console.Write("{0} ",i);
    }    
    Console.Write("\n");
}