13 数组--C#

1. 数组

数组实际上是由一个变量名称表示的一组同类型的数据元素。每个元素可以通过变量名和方括号,再加上一个或多个索引访问。

数组名称[index]

定义

元素: 数组的独立数据项。数组中的所有元素都必须是相同类型的,或者继承自相同类型。

秩、维度: 数组的维度可以为任何整数。称做秩 Rank

维度长度: 数组的每一维都由长度,即这个方向的位置个数。

数组长度: 数组的所有维度中的元素总数长度称为数组的长度。

要点:

数组一旦创建,大小就固定了。C# 不支持动态数组。

数组的索引从0开始的。

2.数组的类型

一维数组可以认为是单行元素或元素向量。

多维数组是由主向量中的位置组成的,每一个位置本身又是一个数组,称为子数组。子数组向量中的位置本身是一个子数组。

多维数组:矩阵数组,交错数组

矩形数组: myArray[4, 6, 1]

不管由多少维度,总使用一组方括号

交错数组: JagArray[2][5][3]

可以由不同长度的子数组,为每一个维度使用一对方括号

3. 数组是对象

数组实例从System.Array继承的对象。

Rank 返回数组的维度数的属性

Length 返回数组长度的属性(数组中的所有元素)

数组是引用类型,与所有引用类型一样,有数据的引用以及数据对象本身。数组对象本身总在堆上,引用在栈或堆上。

数组元素可以是值类型也可以是引用类型。(值类型数组,引用类型数组)

4. 一维数组和矩形数组

声明一维数组或矩形数组

类型和变量名称之间使用一对方括号,方括号内的逗号是秩说明符,指定数组的维度。没有逗号就是一维数组。

一维数组

int[] a = new int[] { 1, 3, 5, 7, 9 };

Console.WriteLine(a.Rank);

Console.WriteLine(a.Length);

输出:

1 – 表示一维数组

5 --表示5个元素

多维数组

int[,] b = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };

Console.WriteLine(b.Rank);

Console.WriteLine(b.Length);

可以这样理解,一个平面的长方形,宽2 ,长3

输出:

2 --表示二位数组

6 --表示6个元素

矩形数组

int[,] C = new int[3, 6, 2];

维度长度:3, 6, 2 ,可以这样理解,一个长方体高 3,长6 ,宽2

堆中分配内存区间:

6.访问数组元素

在数组中使用整型值作为索引来访问数组元素。

数组名【int索引值】

7. 初始化数组

对于预定义类型,整数默认值 0, 浮点型默认值 0.0, 布尔型默认值 False, 引用类型的默认值则是 null

一维数组自动初始化

int[4] intArr = new int[4];

显示初始化一维数组

在数组实例化的数组创建表达式之后加上一个初始化列表。

初始化值必须逗号隔开,并封闭在一组大括号内。

不必输入维度长度,编译器可以通过初始化值得个数来推断长度。

int[4] intArr = new int[4] { 1, 2, 3, 4 };

显示初始化矩阵数组

每一个初始化值向量必须封闭在大括号内

每一个维度也必须嵌套并封闭在大括号内

除了初始值,每一个维度得初始化列表和组成部分也必须使用逗号分隔。

int[,] Arr2 = new int[,] { { 10, 1 }, { 3, 6 },{ 9, 5 } };

初始化矩形数组得语法点

矩形数组使用嵌套得,逗号分隔得初始化列表进行初始化。

int[,] intArry = new int[4, 3, 2]

{

{{1,2},{3,4},{5,6} },

{{7,8},{9,0},{1,2} },

{{3,4},{5,6},{7,8 }},

{{1,2},{3,4},{5,6} },

};

快捷语法:

int[] a1 = new int[3] { 1, 2, 3 };  // 等价

int[] a2 = { 1, 2, 3 };

隐式类型数组

初始化数组是,让编译器根据初值得类型来推断数组类型。

var a3 =new [] { 1, 2, 3 };

8. 交错数组

交错数组是数组的数组。交错数组的子数组的元素个数可以不同。

交错数组语法要求每一个维度都有一对独立的方括号。交错数组维度可以是大于1的任意整数。

9.  foreach 语句

允许我们连续访问数组中的每一个元素。

int[] a = new int[] { 1, 3, 5, 7, 9 };

foreach (var item in a)

{

Console.WriteLine(item);

}

迭代变量 item是只读的,不能改变它。

多维数组

int[,] b = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };

foreach (var item in b)

{

Console.WriteLine(item);

}

输出:

1

2

3

4

5

6

3

10. 数组的协变

在某些情况,即使某个对象不是数组的基类型,也可以把它赋值给数组元素,这种属性叫做数组协变。

数组是引用类型数组,在赋值的对象类型和数组基类类型之间有隐式转换或者显示转换。

11. 数组继承的有用成员

Rank  获取数组的维度数

Length    获取数组中所有维度的元素总和

GetLength  返回数组指定维度的长度

Clear 将某一范围内的元素设置为0或null

Sort  在一维数组中堆元素进行排序

BinarySearch 使用二进制搜索,搜索一维数组中的值

Clone  进行数组的浅复制

Indexof  返回一维数组中遇到的第一个值

Reverse  反转一维数组中的某一范围内的元素

GetUpperBound 获取指定维度的上限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值