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。
请各位高手们指点指点,小弟把哪里搞错了?
是不是把“第一维”“第二维”的概念搞错,抑或其他?
我知道,学习不只是“想当然”地弄懂某些知识,而是要“实践出真知”,不说了,可心中总是有些不踏实,
我究竟把哪里搞错了?
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。
请各位高手们指点指点,小弟把哪里搞错了?
是不是把“第一维”“第二维”的概念搞错,抑或其他?
我知道,学习不只是“想当然”地弄懂某些知识,而是要“实践出真知”,不说了,可心中总是有些不踏实,
我究竟把哪里搞错了?
相关文章推荐
- C#有关数组内存的释放及动态数组问题
- 快速解决C# android base-64 字符数组的无效长度问题
- C#中有关string和byte[]转换的问题
- C#中有关string和byte[]转换的问题
- c#读取excel的过于智能有关问题
- C# 数组下标的问题
- c# 窗口句柄有关的常见问题(转载)
- 关于算法—— 一维字符串数组之间组合问题的C#实现
- IOS_FMDB有关字典、数组存储及获取问题
- C#中有关string和byte[]转换的问题
- C# 字节数组 到 结构体的强制转换 及解引用相关问题
- C#不规则窗体制作(已经解决24位色以上不能正常显示问题)
- C#模拟点击网页按钮,提交数据有关问题
- [Java]有关比较器(Comparator接口)的用法及对象数组排序问题
- C#中数组作为参数传递的问题
- 基于C#调用c++Dll结构体数组指针的问题详解
- 有关c#.net“无法加载 CSOpenGLC.dll:找不到指定的模块”的问题解决办法
- 有关sizeof 数组名的问题 数组名和指针的深入理解(C++)
- C#socket传字节数组到flash socket接收 大小端(字节序)问题