0

我是 C# 新手,正在研究数组。

鉴于:

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

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

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

5 回答 5

5

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

这与数组是多维数组的一部分这一事实无关,它只是 CLR 开发人员选择(或者更确切地说,选择ToString()System.Array.

于 2013-02-07T17:53:59.123 回答
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());
}
于 2013-02-07T17:55:06.633 回答
1

您正在打印出一组int.

尝试以下方法打印数组中的第一个值:

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

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

foreach (int[] j in myJagArray)
{
    foreach (int i in j)
    {
        Console.WriteLine("i : {0}",i);
    }
}
于 2013-02-07T17:55:25.210 回答
0

你应该像下面这样

for(int i=0;i<5;i++)
    for( int j=0;j<5;j++)
        print(myjagarray[i][j].tostring());
于 2013-02-07T17:58:26.660 回答
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");
}
于 2013-02-07T17:58:28.720 回答