一维数组
C#中的数组是强类型的,同一个数组只能存储相同类型的数据。 数组中的数据在内存中是连续存储的,数组是引用类型,存储在堆上,数组具有一定的长度。
1、定义数组
1.1 基本语法
一维数组定义的基本语法如下:
数据类型[] 数组变量名;
- 数据类型:可以是任意的数据类型,内置数据类型和自定义数据类型都可以。
- []:空的中括号表示要定义的一维数组,是定义数组的特殊标志。
- 数组变量名:其实就是一个变量名,命名规则与C#标识符规则一样。 示例如下:
int[] intA;
double[] doubleA;
string[] strA;
decimal[] decA
以上只是定义了数组,并没有初始化,数组与变量是一样的,在使用之前必须初始化。
1.2 初始化
定义好的数组第一次赋值就是数组初始化,C#数组初始化需要使用 new 关键字。
初始化数组的基本语法如下:
数据类型[] 数组名 = new 数据类型[长度];
语法说明如下:
- new: 实例化数组,生成一个数组对象,并在内存中分配空间。
- 数据类型: 赋值号(=)左右的数据类型必须一致。
- 长度: 长度是指定义的数组能够存储多少个数据。
在C#中,数据是引用类型,使用new关键字初始化后,会在内存中根据指定的长度分配空间,并且给数组中的每个位置赋值默认值,如int类型的数组,默认值是0。 如下情况,定义和初始化数组:
int[] scores = new int[5]
以上定义了int类型的scores数组,并初始化长度为5的数组存储空间,表示该数组只能存储5个整数。 只要数组定义并初始化后,就可以在程序中使用了。
2、使用数组
2.1 默认值
在C#中赋值要根据索引(也称为下标)值来赋值,因为数组是个容器,按顺序一一存储。
可以将数组理解为具有许多格子的箱子,并给每个格子编上号,注意,在C#中,编号是从0开始的,这个编号称为索引值或下标值。
在C#中,当数组初始化后,在内存中就会分配空间,并且还会给数组中的每个索引位置初始化为默认值。
如下,数组初始化后默认值:
//定义和初始化数组
int[] scores = new int[5]
//打印第一个位置的值
Console.WriteLine(socres[0]);
由于scores数组是int类型,默认值为0,因此,打印索引值为1所在位置的值是0,其它位置的值也是0.
C#中,对于string类型的数组,默认值是null,double 类型的数组值,默认为0.0, bool类型的数组,默认值是 false。
2.2 赋值
在C#中给数组赋值,其实就是修改默认值,给数组赋值时,要使用数组名和索引值,索引值是从0开始。
给数组赋值的基本语法如下:
数组名[索引值] = 值;
在数组中,数据是按索引值顺序存储的,下面给scores赋值:
//定义和初始化数组
int[] scores = new int[5];
//赋值
scores[0] = 100;
scores[3] = 300;
2.3 取值
2.3.1 获取单个值
如果是一个一个的获取数组中的值,使用索引值即可。
获取单个值的语法如下:
数据类型 变量 = 数组名[索引值]
定义一个与数组类型完全一样的变量来接受:
//定义和初始化数组
int[] scores = new int[5];
//赋值
scores[0] = 100;
socres[3] = 300;
//取值
int sc = scores[3];
sc变量接收scores数组中索引值为3位置的值。
2.3.2 使用循环获取
在C#中可以使用循环语句一次性获取数组中所有的值:
//定义和初始化数组
int[] socres = new int[5];
//赋值
scores[0] = 100;
socres[3] = 300;
//使用for循环获取scores数组中所有的值
for(int i=0; i<5;i++)
{
//变量的值从0到4递增
//score数组共能存储5个整数,索引是从0开始,所以最大索引只能是4
Console.WriteLine($'socres[{i}] = {socres[i]}");
}