首页 > C# > C#中的数组及常见操作
2021
09-01

C#中的数组及常见操作

数组是一个存储相同类型元素的固定大小的顺序集合,是用来存储数据的集合。

数组中某个指定的元素是通过索引来访问的。

所有的数组都是由连续的内存位置组成的。最低的地址对应第一个元素,最高的地址对应最后一个元素。

声明一个数组

datatype[] arrayName;

datatype :用于指定被存储在数组中的元素的类型
[]       :指定数组的秩(维度)
arrayName:指定数组的名称
元素类型和秩之间可以有空格也可以不留空格

声明一个数组不会在内存中初始化数组

创建(初始化)数组

数组是一个引用类型,所以需要使用new关键字来创建数组的实例

double[] demo = new double[10];
会创建一个所有元素都是double类型的包含10个元素的数组

当创建一个数组时,会根据数组元素类型隐式为每个元素初始化一个默认值。如int数组所有元素都会被初始化为0

赋值给数组

可以通过使用索引号赋值给一个单独的数组元素

double[] demo = new double[10];
demo[2] = 3600;

可以在声明数组的同时给数组赋值

int[] demo = {1,2,3,4,5}

可以创建数组的时候同时赋值

int[] demo = new int[5] {1,2,3,4,5}
可以省略数组的大小
int[] demo = new int[] {1,2,3,4,5}

访问数组元素

元素是通过带索引的数组名称来访问的

使用foreach循环遍历数组

foreach(int x in demo){
    Console.WriteLine(x);
}

多维数组

C#中的多维数组概念不同于其他语言中的多维数组,C#中的多维数组又称为矩形数组

声明一个int类型的二维数组
int[,] demo
中括号中有1个逗号,表示数组为二维数组

声明一个int类型的三维数组
int[,,] demo
中括号中有2个逗号,表示数组为三维数组

一个二维数组可以被认为是一个带有x行和y列的表格

创建一个二维数组

int[,] demo = new int[3,4]{
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12}
}
上例表示创建一个3行4列的二维数组

通过使用下标,即数组的行索引和列索引

demo[1,3]表示demo数组的第2行第4列的元素

一个三维数组表示一个有x行y列且每个元素又是包含x个元素的数组

创建一个三维数组

int[,,] demo = new int[2,2,3]{
    {{1,2,3},{4,5,6}},
    {{7,8,9},{10,11,12}}
}
上例表示创建一个2行2列且每个元素又包含3个元素的数组

demo[0,1,1]表示获取第1行第2列中的第2个元素,即5

交错数组

C#中的交错数组概念与其他语言的多维数组类似,但是在C#中交错数组是一维数组

创建一个交错数组

int [][] demo = new int[3][4]
表示创建一个包含3个元素的int类型数组,而这3个元素每个元素又是一个包含4个元素的数组。

初始化交错数组

int [][] demo = new int[3][4]{
    new int[] {1,2,3,4},
    new int[] {5,6,7,8},
    new int[] {9,10,11,12}
}

数组的常用属性和方法

Array类是C#中所有数组的基类,它是在System命名空间中定义。

Array类提供了各种用于数组的属性和方法。

常用属性

IsFixedSize:bool,返回数组是否带有固定大小
IsReadOnly:bool,数组是否只读
Length:int,所有维度的数组中的元素总数的32位整数
LongLength:long,所有维度的数组中的元素总数的64位整数
Rank:获取数组的秩(维度)

常用方法

Array.Clear(arr,index,len):根据元素的类型,设置数组中从制定索引index开始的len个元素为默认值

Array.Copy(arr1, arr2, len):从数组arr1的第一个元素开始复制len个元素到数组arr2的第一个元素位置

Array.Copy(arr1, index1 , arr2, index2 , len):从数组arr1的index1位置元素开始复制len个元素到数组arr2的index2元素位置

arr1.CopyTo(arr2, index):从arr1中复制所有的元素到arr2是指定索引index位置

arr.GetLength(n):获取数组arr的指定维度(n)中的元素总数(32为整数)

arr.GetLongLength(n):获取数组arr的指定维度(n)中的元素总数(64为整数)

arr.GetUpperBound(n):获取数组中指定维度的上界

arr.GetLowerBound(n):获取arr中指定维度的下界

arr.GetType():获取当前实例元素的类型

arr.GetValue(index):获取arr中指定索引index位置的值

Array.IndexOf(arr, val):在arr中搜索指定的val,返回第一次匹配的索引,查找失败时返回值为该数组的下标下限减1

Array.LastIndexOf(arr, val):在arr中搜索指定的val,返回最后一次匹配的索引,查找失败时返回值为该数组的下标下限减1

Array.Reverse(arr):逆转arr数组中元素的顺序

arr.SetValue(val, index):为arr中指定索引的元素设置值

Array.Sort(arr):将arr元素从小到大排序

arr.ToString():返回一个表示当前对象的字符串
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。