概述
C# 数组(Array)
文章目录:
- C# 数组
- 一维数组
- 多维数组
- 交错数组
- Array类
- 参数数组
1.简介
数组是一个存储相同类型元素且固定大小的顺序集合。数组是用来存储数据的集合,通常认为数组是一个同一类型变量的集合。
所有的数组都是由连续的内存位置组成,最低的下标对应第一个元素,最高的下标对应最后一个元素。
2.数组的声明
在 C# 中声明一个数组,可以使用下面的语法:
datatype
- datatype 指定被存储在数组中的元素的类型
- [ ] 指定数组的秩(维度),秩是指数组的维数,如一维数组的秩为1,二维数组的秩为2
- arrayName 指定数组的名称
3.特性介绍
1)数组是引用类型而不是值类型。
2)数组的容量为固定值,无法修改,如果要增减容量,必须创建新数组,将旧数组的元素复制到新数组中,并删除旧数组。
3)数组不会自动排序,默认按照初始化时排列顺序排序。
4)多维数组可以为每个维度提供不同的界限,最多可以有 32 个维度。
5)数组中的元素不可为 null,否则编译时会报错。
6)数组的长度为元素的总数,长度为 Length-1,超出长度编译时会报错。
一 . 一维数组
datatype
一维数组的元素个数称为一维数组的长度。
一维数组长度为 0 时,我们称之为空数组。一维数组的索引从零开始,具有n个元素的一维数组的索引是从 0 到 n-1 。
当创建一个数组时,编译器会根据数组类型隐式初始化每个数组元素为一个默认值。例如,int 数组的所有元素都会被初始化为 0。
1.一维数组的声明和创建形式:
数组类型 [ ] 数组名 = new 数组类型 [数组长度]
//表示声明和创建一个具有5个数组元素的一维数组a
2.一维数组的初始化:
1)在创建时初始化
int
2)先声明后初始化
int
3)先创建后初始化
int
3.遍历数组
int
运行结果:
二 . 多维数组
datatype
多维数组需要使用多个元素索引才能确定数组元素的位置。
声明多维数组时,必须明确定义维度数、各维度的长度、数组元素的数据类型。
多维数组的元素总数是各维度的长度的乘积。
例如:如果二维数组a的两个维度的长度分别为2和3,则该数组的元素总数为6。
1.多维数组的声明和创建形式:
数组类型 [ 维度 ] 数组名 = new 数组类型 [ 维度长度 ];
//表示声明和创建一个具有 5×4×3 共60个数组元素的三维数组a
2,多维数组的初始化需要注意以下几点:
1)以维度为单位组织初始化值,同一维度的初始值放在一对花括号之中
int
2)可以省略维度长度列表,系统能够自动计算维度和维度的长度。但注意,逗号不能省略
int
3)初始化多维数组可以使用简写格式
int
4)不允许部分初始化
//只初始化二维数组的第一列元素,这是不允许的
5)可以先创建再初始化,但不建议这样使用,因为会非常麻烦
注意:声明时 不需要 指定内存,创建时 需要 指定内存
//先创建后初始化需要通过下标一个一个赋值
6)可以先声明,再初始化
int
3.遍历数组
int
运行结果:
三 . 交错数组
datatype
交错数组是一种由若干个数组构成的数组。为了便于理解,我们把包含在数组中的数组称为子数组。
1.交错数组的声明和创建形式:
数组类型 [ 维度 ] [ 子数组维度 ] 数组名 = new 数组类型 [ 维度长度 ] [ 子数组维度 ] ;
//表示创建了由2个一维子数组构成一维数组a
2.交错数组的初始化:
交错数组同样有多种初始化方式,包括创建时初始化、先声明后初始化等。
注意:初始化交错数组时,每个元素的 new 运算符都不能省略
1)创建时初始化可省略维度长度
//表示创建由2个一维子数组构成的数组a
2)先声明后初始化更加直观
//声明由3个一维子数组构成的数组a
3.遍历数组
int
运行结果:
四.Array类
1.简介
Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法。
Array 类是抽象类,无法 new ,只能继承。
Array 类的方法和属性
1) Array 类的一些常用的 属性:
属性 | 描述 |
---|---|
IsFixedSize | 大小是否固定 |
IsReadOnly | 是否只读 |
Length | 获取数组中的元素总数(值为32位整数) |
LongLength | 获取数组中的元素总数(值为64位整数) |
Rank | 获取数组的秩(维度) |
2) Array 类的一些常用的 方法:
方法 | 描述 |
---|---|
object GetValue (int index); | 获取一维 Array 中指定位置的值 |
object? GetValue (int[] indices); | 获取多维 Array 中指定位置的值,int[] indices 为一维数组,表示指定位置的索引 |
int GetLowerBound (int dimension); | 获取 Array 指定维度第一个元素的索引 |
int GetUpperBound (int dimension); | 获取 Array 指定维度最后一个元素的索引 |
int GetLength(int dimension); | 获取指定维度中的所有元素总数(值为32位整数) |
long GetLongLength(int dimension); | 获取指定维度中的所有元素总数(值为64位整数) |
bool Equals(object object); | 确定指定对象是否等于当前对象 |
void SetValue (object value, int index); | 设置一维 Array 中指定位置元素的值 |
void SetValue (object? value, params int[] indices); | 设置多维 Array 中指定位置元素的值,int[] indices 是一维数组,它表示指定位置的索引 |
void CopyTo(Array array, int index); | 将当前一维数组的所有元素复制到指定的一维数组的指定索引处 |
3) Array 类的一些常用的 静态方法:
静态方法 | 描述 |
---|---|
void Sort (Array array); | 对一维 Array 进行排序 |
void Sort (Array keys, Array items); | 基于第一个 Array 的值,对两个一维 Array 进行排序 |
void Sort (Array array, int index, int length); | 对一维 Array 中指定范围元素进行排序 |
void Reverse (Array array); | 反转一维 Array 中所有元素的顺序 |
void Reverse (Array array, int index, int length); | 反转一维 Array 中指定范围元素的顺序 |
int IndexOf (Array array, object? value); | 搜索一维 Array 指定对象,返回首个索引 |
int IndexOf (Array array, object? value, int startIndex, int count); | 从指定索引范围搜索一维 Array 指定对象,返回首个索引 |
int LastIndexOf (Array array, object? value); | 搜索一维 Array 指定对象,返回最后索引 |
int LastIndexOf (Array array, object? value, int startIndex, int count); | 从指定索引范围搜索一维 Array 指定对象,返回最后索引 |
void Copy(Array array, int index, Array array, int index, int length); | 复制指定范围的元素到另一个 Array 指定索引处 |
void Resize (ref T[]? array, int newSize); | 将一维 Array 元素总数更改为指定的新大小 |
void Clear(Array array, int index , int length); | 将 Array 某个范围的元素设置为每个元素类型的默认值 |
代码演示
注意:为了方便阅读,以下将代码拆分为多段进行演示,实际运行可以把代码直接拼接起来
using
非静态方法:
Console
运行结果:
Console
运行结果:
Console
运行结果:
静态方法:
Console
运行结果:
Console
运行结果:
Console
运行结果:
Console
运行结果:
五.参数数组
当声明一个方法时,不能确定参数的数目,可以使用参数数组,参数数组通常用于传递未知数量的参数给方法。
params 关键字
在使用数组作为形参时,C# 提供了 params 关键字,使调用数组为形参的方法时,既可以传递数组实参,也可以只传递一组数组。params 的使用格式为:
public
代码演示
using
运行结果:
最后
以上就是粗犷哑铃为你收集整理的C# 数组增加元素_【c#资料】数组(Array)的全部内容,希望文章能够帮你解决C# 数组增加元素_【c#资料】数组(Array)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复