见下列代码:
static void Main(string[] args) { int[,] a = new int[,] { { 0, 1, 2, 3 }, { 2, 3, 4, 5 }, { 3, 4, 5, 6 } }; Console.WriteLine("规则数组:"); Console.WriteLine(a.Length); Console.WriteLine(a.GetLength(0)); Console.WriteLine(a.GetLength(1)); int[][] b = new int[3][]; b[0] = new int[4]; b[1] = new int[5]; b[2] = new int[4]; //b[3] = new int[5]; Console.WriteLine("不规则数组:"); Console.WriteLine(b.Length); Console.WriteLine(b.GetLength(0)); //调用将会出错: Console.WriteLine(b.GetLength(1)); Console.WriteLine(b[0].Length); Console.Read(); }
输出结果为:
规则数组:
12
3
4
不规则数组
3
3
4
第一个规则数组很好理解,但是第二个不规则数组,为什么b.GetLength(0)和b[0].Length不一样。
调试监视变量结果如下图:
通过上图可以发现b.GetLength(0)其实取的是b数组里面共有几个一维数组,这里我们定义 int[][] b = new int[3][];所以结果为3
而b[0].Length则是取的b数组里面的第一个一维数组的长度,这里我们定义了 b[0] = new int[4];所以结果为4
在这里我们可以给b里面的第一个一维数组赋值:b[0][0] = 5;或者 b[0] = new int[4]{1,2,3,4};
这样b[0]数组里面就有值了。