C#参差数组简单描述

开发 后端
这里介绍C#参差数组又称数组的数组(Array of Array),它表面上类似于上面讲到的多维数组,但它本质上仍是一个一维数组,只不过它的元素又是一个数组(可以是一维数组、多维数组或者C#参差数组)。

C#数组有很多值得学习的地方,这里我们主要介绍C#参差数组,包括介绍C#参差数组的声明与初始化等方面

C#参差数组

C#参差数组又称数组的数组(Array of Array),它表面上类似于上面讲到的多维数组,但它本质上仍是一个一维数组,只不过它的元素又是一个数组(可以是一维数组、多维数组或者C#参差数组)。C#参差数组一个显著的特性是作为它的元素的数组阶数可以不同,非常形象地表现为“参差不齐”状。由于本质仍是一个一维数组,C#参差数组的声明与初始化和一维数组的规定一样,只是由于在“感觉”上老把它假定为一个多维数组而导致在这里很容易犯错,看下面的代码与注释:

  1. //声明的同时初始化  
  2. int[][] MyRagArr1=new int[][]{new int[]{1,2,3},new int[]{2,4,6}};  
  3. //声明并初始化二维数组,其元素为三维数组  
  4. int[][] MyRagArr2={new int[]{1,2,3},  
  5. new int[]{2,4,6}};//简化形式的初始化  
  6. //不可以用多维数组的初始化语句:int[][] MyRagArr2={{1,2,3},{2,4,6}};  
  7. //声明与初始化分开  
  8. int[][] MyRagArr3;  
  9. MyRagArr3=new int[2][];//初始化一维数组,  
  10. //不可以这样:MyRagArr3=new int[2][3];  
  11. MyRagArr3[0]=new int[]{1,2,3};  
  12. //初始化数组元素  
  13. MyRagArr3[1]=new int[]{2,4,6};  
  14. //初始化数组元素  
  15. //初始化中可以指定数组的容  
  16. int[][] MyRagArr4=new int[2][]{new int[]{1,2,3},new int[]{2,4,6}};  
  17. //不可以: int[2][] MyRagArr=new int[2][]{new int[]{1,2,3},new int[]{2,4,6}};  
  18. //也不可以: int[][] MyRagArr4=new int[2][3]{new int[]{1,2,3},new int[]{2,4,6}};  
  19. //一个典型的“参差”数组  
  20. int[][] MyRagArr5=new int[3][];  
  21. MyRagArr5[0]=new int[]{1,2,3,4,5};  
  22. MyRagArr5[1]=new int[]{1,2,3};  
  23. MyRagArr5[2]=new int[]{1,2,3,4,5,6,7,8};  

C#采用多个括号并列的方式来表达C#参差数组(数组的数组)。上面的代码和注释详细地展示了C#参差数组在声明和初始化时的用法。大多数行为和前面从一维数组中得来的经验相同,但只有一点需要指出:为什么在指定数组容量的时候只能指定其第一个括号中的常量或常数,而不可以指定其后面括号中的容量?这可以从C#参差数组的本质——一维数组上找到答案。在对C#参差数组初始化的时候,实际上是在初始化一维数组中的各个元素。根据一维数组的规定,只能指定这些元素的个数,即一维数组的容量,也就是C#参差数组第一个括号中的常量或常数。

【编辑推荐】

  1. C#数组和指针全面讨论
  2. 简单介绍C#数组和函数
  3. C#数组初始化的应用实例解析
  4. 学习Visual C#数组速成法
  5. 浅谈C#数组工作方式
责任编辑:佚名 来源: IT168
相关推荐

2009-09-17 16:17:41

C#参差数组初始化

2009-09-16 09:01:40

C#多维数组

2009-08-07 10:12:09

C#二维数组

2009-08-31 18:32:01

C# ListBoxE

2009-08-19 10:09:21

C#和C++

2009-09-03 16:55:58

C#引用类型

2009-09-07 15:31:49

C#支持事件

2009-08-27 10:01:52

C#自动属性

2009-08-20 16:45:03

C#哈希值

2009-09-01 17:08:35

C# Color枚举

2009-08-13 17:58:34

C#存储过程

2009-09-07 14:33:02

C# switch语句

2009-09-01 18:25:32

C#结构实例

2009-08-21 17:31:58

C#垃圾回收

2009-08-28 09:30:48

C#命名属性

2009-09-02 13:01:11

C#多路广播

2009-08-31 17:53:20

C#实现索引器

2009-09-03 10:19:12

C#表单控件

2009-09-02 10:39:00

C#释放托管资源

2009-08-26 14:54:23

C# new和over
点赞
收藏

51CTO技术栈公众号