繁体   English   中英

C#多维数组迭代

[英]C# multidimensional arrays 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()

这与数组是多维数组的一部分这一事实无关,这只是CLR开发人员选择在System.Array上实现(或选择实现) ToString()

因为j在这种情况下是一个数组,所以它打印来自ToString()方法的输出,它使用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());

当您使用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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM