C#数组的问题

来源:百度知道 编辑:UC知道 时间:2024/04/30 00:03:13
double [][]shapes=new double[4][];
shapes[0]=new double[1]{10};//圆
shapes[1]=new double[4]{3,4,3,4};//四边形
shapes[2]=new double[3]{3,4,5};//三角形
shapes[3]=new double[5]{5,5,5,5,5}; 五边形

这是怎么个意思
我看不懂
哪位帮忙解释一下
越详细越好
谢谢

shapes是一个数组,它有几个元素,它的元素也是数组

本人对double有偏见,所以换用int
用我自己的代码帮你解释吧

int[]i0=new int[]{321};
int[]i1=new int[]{321,654};
int[]i2=new int[]{321,654,987};

int[][]shapes=new int[3][];
shapes[0]=i0;//从这样的存取方式看来,iis也是个一维数组
shapes[1]=i1;
shapes[2]=i2;
shapes其实是一个一维数组,它里面存放的元素也是数组,例如,在这里shapes[2].Length就和i2.Length一样是3
而shapes[2]所存取到的事实上也就是i2,那么shapes[2][2]所存取到的就是i2的第(2+1)个元素

shapes
+-i0--{321}
+-i1--{321,654}
+-i2--{321,654,987}
上面这个图表示了shapes,shapes是一个一维数组,它有三个元素,那三个元素的值分别是i0,i1,i2,而i0,i1,i2自己也是数组
shapes[0]通过这个样子存取到的是shapes的第一个元素,首先就告诉你了,shapes的元素也是数组,所以shapes[0]=i0这个语句是合法的,因为shapes[0]是一个int数组,而i0也是一个int数组,就是这么回事儿~
所以经过我上面那几行代码之后
Console.WriteLine(shapes[2].Length);
这句代码会输出3,也就是i2的长度(i2有3个元素嘛!)
当然,在这句代码之后:int[][]shapes=new int[3][];
你可不能直接使用shapes[0]~shapes[2]呀,因为shapes那三个元素的值还没有被初始化,还是null,你如果使用了那个为null的元素,就会导致程序发出异常
另外,在声明上面shapes那种数组的时候,还有几点要注意
int[][