C#多维数组迭代

C#多维数组迭代,c#,arrays,multidimensional-array,iteration,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); } 由于Array.ToString()不返回数组的内容,因此它返回类型名称,Console.WriteLine对作为参数发送的每个对象隐式调用ToString() 这与数组是多

我不熟悉C#和数组

鉴于:

int[][] myJagArray = new int[5][];
为什么下面打印的是j(System.Int32[])的类型,而不是每个j的内容

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

由于
Array.ToString()
不返回数组的内容,因此它返回类型名称,
Console.WriteLine
对作为参数发送的每个对象隐式调用
ToString()


这与数组是多维数组的一部分这一事实无关,这只是CLR开发人员选择(或者更确切地说,选择不)在
系统上实现
ToString()
的方式。array

它打印来自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());
}

您正在打印一个
int
数组

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

Console.WriteLine("j : {0}",j[0]);
要打印出全部内容,您可能需要尝试以下操作:

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

你应该像下面这样做

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

for(int i=0;i当您使用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");
}