下面贴一段遍历数组得代码.是编译失败得,请分析,
int[,] myStrAr = new int[,] { { 1, 2, 3, 4, 5, 6 }, { 34, 45, 56, 67, 78, 54 } };
for (int i = 0; i < myStrAr.GetLength(0); i++) //
{
for (int j = 0; j < myStrAr[i].Length; j++)
{
Console.WriteLine("{0}",myStrAr[i,j]);
}
}
Console.ReadKey()但是在交错数组中这样遍历却又可以, int[][] myString = { new int[] { 12, 34, 45, 56 }, new int[] { 423, 45 } };
for (int i = 0; i < myString.Length; i++) {
for (int j = 0; j < myString[i].GetLength(0); j++)// 不可以换成getlength(1)
{
Console.WriteLine("{0,-3}",myString[i][j]);
}
}请问,为什么在交错数组中可以这样遍历,而在多维数组中却不可以呢
int[,] myStrAr = new int[,] { { 1, 2, 3, 4, 5, 6 }, { 34, 45, 56, 67, 78, 54 } };
for (int i = 0; i < myStrAr.GetLength(0); i++) //
{
for (int j = 0; j < myStrAr[i].Length; j++)
{
Console.WriteLine("{0}",myStrAr[i,j]);
}
}
Console.ReadKey()但是在交错数组中这样遍历却又可以, int[][] myString = { new int[] { 12, 34, 45, 56 }, new int[] { 423, 45 } };
for (int i = 0; i < myString.Length; i++) {
for (int j = 0; j < myString[i].GetLength(0); j++)// 不可以换成getlength(1)
{
Console.WriteLine("{0,-3}",myString[i][j]);
}
}请问,为什么在交错数组中可以这样遍历,而在多维数组中却不可以呢
int[][] myString 声明的数据结构不一样 int[][] myString是数组的数组,而int[,] myStrAr是二维数组
你打个断点看看他们赋值后的结构就明白了
int[,] myStrAr = new int[,] { { 1, 2, 3, 4, 5, 6 }, { 34, 45, 56, 67, 78, 54 } };
for (int i = 0; i < myStrAr.GetLength(0); i++) //
{
for (int j = 0; j < myStrAr.GetLength(1); j++)
{
Console.WriteLine("{0}", myStrAr[i, j]);
}
}
for (int i = 0; i < myString.Length; i++) {
for (int j = 0; j < myString[i].GetLength(0); j++)// 不可以换成getlength(1)
{
Console.WriteLine("{0,-3}",myString[i][j]);
}
}
myString[0] 实际上是 new int[] { 12, 34, 45, 56 }
myString[1] 是new int[] { 423, 45 }myString[0].GetLength(1) //当然出错误了
foreach(int i in a)
{
Console .WriteLine (i);
}
int [,] arr1={{1,2}, {3,4}, {5,6}, {7,8}};
for(int i=0;i<arr1.GetUpperBound(0)-arr1.GetLowerBound(0)+1;i++)
{
for(int j=0;j<arr1.GetUpperBound(1)-arr1.GetLowerBound(1)+1;j++)
{
Console.WriteLine(arr1[i,j]);
}
}
Console.Read();
for (int i = 0; i <= myStrAr.GetUpperBound(0); i++)
{
for (int j = 0; j <= myStrAr.GetUpperBound(1); j++)
{
Console.WriteLine(myStrAr[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("".PadRight(36, '-'));
//方法2-----------------------------------------
for (int i = 0; i < myStrAr.GetLength(0); i++)
{
for (int j = 0; j < myStrAr.GetLength(1); j++)
{
Console.WriteLine(myStrAr[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("".PadRight(36, '-'));
//方法3-----------------------------------------
foreach (int item in myStrAr)
{
Console.Write("{0} ", item);
}
Console.WriteLine("\n".PadRight(36, '='));
//=========================================
//交错数组,即由数组组成的数组。交错数组是一维数组,且每个元素自身是一个数组。作为元素的数
//组无需均为相同的大小。
int[][] myString = { new int[] { 12, 34, 45, 56 }, new int[] { 423, 45 } };
foreach (int[] Item in myString)
{
foreach (int item in Item )
{
Console.Write("{0} ", item);
}
Console.WriteLine();
}
for (int i = 0; i < myStrAr.GetLength(0); i++) //
{
for (int j = 0; j < myStrAr.GetLength(1); j++)
{
Console.WriteLine("{0}",myStrAr[i,j]);
}
}
Console.ReadKey();