C#多维数组迭代
本文关键字:迭代 数组 | 更新日期: 2023-09-27 17:58:08
我是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()
的方式(或者更确切地说,选择而不是)。
它打印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());
当您使用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");
}