您的位置:首页 > 编程语言 > C#

C#中有关规则与不规则数组的问题

2009-04-26 19:24 162 查看
各位高手们,请耐心地看完以下内容,小弟不甚感激:

using System;
namespace P2_9
{
class MultiArrarySample
{
public static void Main()
{
int[,] a = { { 0, 0, 1, 1 }, { 1, 1, 2, 2 }, { 2, 3, 4,5 } };
int[][] b = new int[3][];
b[0] = new int[4];
b[1] = new int[3];
b[2] = new int[2];
Console.WriteLine("规则数组");
Console.WriteLine("长度:{0}",a.Length);
Console.WriteLine("子数组长度:{0},{1}/r/n",a.GetLength(0),a.GetLength(1));
Console.WriteLine("不规则数组");
Console.WriteLine("长度:{0},{1}",b.Length,b.GetLength(0));
//调用b.GetLength(1)将会出错
Console.WriteLine("子数组长度:{0},{1},{2}",b[0].Length,b[1].Length,b[2].Length);
}
}
}

以下是书中的知识(C#语言程序设计基础 郑宇军 王侃 编著 清华大学出版社):
“对于规则数组来说,调用其Length属性所得的值为整个数组的长度;而调用其GetLength方法,
参数为0时得到数组第1维的长度,为1时得到第2维的长度,依此类推。而对于不规则多维数组而言,
调用其Length属性和以0为参数调用其GetLength方法,得到的都是第一维的长度,且不能以其他整数
为参数调用数组的GetLength方法。”

编译后控制台输出结果为:
规则数组
长度:12
子数组长度:3,4

不规则数组
长度:3,3
子数组长度:4,3,2

让我不明白的问题是,依照以上书中的知识,我认为输出结果应该是:
规则数组
长度:12
子数组长度:4,4

不规则数组
长度:4,4
子数组长度:4,3,2

可事实上,编译后控制台的结果是正确的。我编译了一下,控制台结果的确是对的。

我是这样理解的,“对于规则数组来说,调用其GetLength方法,参数为0时得到数组第1维的长度”,
a.GetLength(0)对应数组a的第一维{0,0,1,1},显示应该为4,而控制台却显示3;同理,b.Length
和b.GetLength(0)也对应着数组b的b[0],显示应该为4,4,但却显示3,3。

请各位高手们指点指点,小弟把哪里搞错了?
是不是把“第一维”“第二维”的概念搞错,抑或其他?
我知道,学习不只是“想当然”地弄懂某些知识,而是要“实践出真知”,不说了,可心中总是有些不踏实,
我究竟把哪里搞错了?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: