我是C#的新手,正在查看数组。C#多维数组迭代
考虑:
int[][] myJagArray = new int[5][];
为什么下面的打印类型 j的(System.Int32 []),而不是每个J的内容是什么?
foreach (int[] j in myJagArray)
{
Console.WriteLine("j : {0}",j);
}
我是C#的新手,正在查看数组。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()on该值,而Array.ToString()不会返回值,而是返回类型。如果要输出j的值,则需要运行第二个循环:
foreach (int[] j in myJagArray)
{
Console.Write("j: ");
foreach (int i in j)
{
Console.Write("{0} ",i);
}
Console.Write("\n");
}