经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C# » 查看文章
C# 多维数组 交错数组的区别,即 [ , ] 与 [ ][ ]的区别
来源:cnblogs  作者:痴者工良  时间:2018/11/9 18:09:59  对本文有异议

多维数组的声明

在声明时,必须指定数组的长度,格式为 type [lenght ,lenght ,lengh, ... ]

  1. int [,] test1 = new int [3,3];

 或声明时即赋值,由系统推断长度

  1. int [,] test1 = {
  2. {1,2,3},
  3. {1,2,3},
  4. {1,2,3},
  5. };

交错数组的声明

声明时,至少需要指定第一维的长度,格式为 type [ ] [ ] [ ] ...

  1. int [][] test1 = new int[5][]; 
  1. int [][] test1 = new int[][];    //注意,此的声明方式是错的

或者声明时即赋值,由系统推断长度 

  1. int [][] test1 = {
  2. new int[] {1,2,3,4},
  3. new int[] {1,2,3},
  4. new int[] {1,2}
  5. };

  多维数组与交错数组 二者的相同、区别

两者声明时,都必须指定长度,多维数组必须指定每一维的长度,而交错数组需要至少需要指定第一维的长度。

多维数组声明时,符号是这样的 [ , , , , ],逗号在 方括号 [ ] 中,每一维长度用逗号分隔。而交错数组每一维独立在 [ ]中

当你想指定数组长度时,只能在等号右侧指定,int [,] test1 = new int [3,3] 是正确的 ;int [6,4] test1 = new int [6,4] 是错误的;

下面以代码形式说明

大小不一致的多维数组会发生错误

  1. int [,] test1 = {
  2. {1,2,3,4},
  3. {1,2,3},
  4. {1,2}
  5. }; //这样是错的,长度必须一致

  1. int [,] test1 = new int [4,5] {
  2. {1,2,3,4,5},
  3. {1,2,3},
  4. {1,2,3}
  5. };        //这样也是错误的,长度必须一致,必须为每一个位置赋值

            这一点C#与C语言有所区别,C语言可以不全赋值,没有赋值的位置系统默认为0。

下面的方法是正确的

  1. int [,] test1 = {
  2. {1,2,3},
  3. {1,2,3},
  4. {1,2,3}
  5. };

  初始化交错数组

上面已经说了声明一个交错数组的方法

  1. int [][] test1 = {
  2. new int[] {1,2,3,4},     //new int[4] {1,2,3,4}
  3. new int[] {1,2,3},     //new int[3] {1,2,3}
  4. new int[] {1,2}
  5. };

  

  注意,在里面有 new int[],这正是交错数组的特性。交错数组是由数组构成的数组,交错数组要求为内部的每个数组都创建实例。

  即交错数组的每一维都是一个实例,每一个实例为一个数组。

 

数组的长度是固定的

无论多维数组还是交错数组,长度都是固定的,不能随意改变。

 

获取数组的长度

使用 对象.Length 获取数组的长度,需要注意的是,多维数组的长度是每一维相乘,即元素总个数。

 

  1. int [,] test1 = {
  2. {1,2,3},
  3. {1,2,3},
  4. {1,2,3}
  5. };
  6. Console.WriteLine(test1.Length);
  7. 输出为 9

 

而交错数组的长度则是“内部组成的数组的个数”,例如

 

  1. int [][] test1 = {
  2. new int[] {1,2,3},
  3. new int[] {1,2,3},
  4. new int[] {1,2,3},
  5. };
  6. Console.WriteLine(test1.Length);
    输出为 3

 

方法

多维数组、交错数组的方法无差别,都具有Sort()、Clear()等方法,这里不再赘述,关于数组的高级用法,请查阅

https://www.jb51.net/Special/265.htm

 

下列为System.Array类的属性

由于系统提供的方法比较多,有兴趣请查阅

https://docs.microsoft.com/zh-cn/dotnet/api/system.array?view=netframework-4.7.2

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号