《随笔十二》——C#中的 “ 一维数组、矩形数组、交错数组(锯齿数组)”

本文详细介绍了C#中的数组,包括一维数组、矩形数组和交错数组(锯齿数组)的概念、初始化方式、数组的Rank与Length操作。特别强调了数组的静态大小和索引从0开始的特点,以及不同类型的数组在结构和效率上的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

数组的类型

数组的 Rank、Length 操作

定义和初始化数组的不同方式

定义和初始化矩形数组

隐式类型数组 (var关键字)

初始化和定义交错数组(锯齿数组)

交错数组中的矩形数组

比较矩形数组 和交错 数组


 

 数组实际上是由一个变量名称表示的一组同类型的数据元素,是一组相同类型的集合。 我们首先了解一下数组中的一些重要定义开始:

  • 秩/ 维度 : 数组可以有任何为正数的维度数, 数组的维度称作秩。 意思就是说,该数组是几维数组 ,[  ] 表示一维数组, [ , ]  表示二维数组。
  • 维度长度: 数组的每一个维度的长度, 就是这个方向的位置的元素个数.
  • 数组长度: 数组的所有维度中的元素的总和称为数组的长度。

 注意点:

  • 数组一旦创建并且初始化,大小就固定了,C# 不支持动态数组。
  • 数组的索引从0开始。那么数组中的元素个数的索引范围是 从0 到 n-1


数组的类型


 C#中有两种类型的数组,分别为一维数组和多维数组,多维数组中还分矩形数组和 交错数组(也称为 锯齿数组)。

一维数组: 指的是一组地址连续的相同类型的单行元素序列。

矩形数组:有多个秩,其中每一行的元素个数都相同。 不管多少维度,总是使用一个方括号,例如:

  doule[,] myDouble = new double[3,4]; // 二维数组

交错数组(也称为 锯齿数组):有多个秩,其中每一行的元素个数不一定都相同。然后呢,为数组的每一个维度使用一对方括号:


 int[][] myInt = new int[3][] { new int[] { 1, 2, 3 }, new int[] { 1 }, new int[] { 1, 2 } }; //正确

该数组就是:

1  2  3  // 第一行

1         // 第二行
 
1 2 


数组的 Rank、Length 操作


   数组的实例是从 System.Array 继承的对象。那么数组是引用类型, 数组的引用在栈上或者堆上, 数组的元素总是在堆上。如图:


  数组虽然是引用类型, 但是数组的元素 可以是值类型, 也可以是引用类型(比如类)。

  • 如果存储的元素都是值类型, 数组被称为值类型数组。
  • 如果存储的元素都是引用类型对象, 该数组被称为 引用类型数组。


定义和初始化数组的不同方式


 数组在必须在访问之前初始化,不能像这样访问数组或者给数组元素赋值:

int[] myIntArray;
myIntArray[10] = 5;  //错误, 该数组没有初始化

数组初始化的第一种方式是:用字面值形式指定数组的完整内容。该数组的长度编译器可以通过数组中的元素个数来推断数组的个数。

int [] array= {0,1,2,3,4,5};

 第二种方式是:为数组的每一维指定元素的个数,然后使用new来初始化数组,但是下述程序的数组每一个元素都被自动初始化为该数组类型的默认值。 对于预定义类型, 整型默认为 0,浮点型默认值为0.0, 布尔型默认值为 false,  引用类型 默认值为 null。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值