C# 十、数组的基本操作

本文只列出部分常用操作。

Array类

官方摘要:

        提供一些方法,用于创建、处理、搜索数组并对数组进行排序,从而充当公共语言运行时中所有数组的基类。 若要浏览此类型的.NET Framework 源代码,请参阅Reference Source。

Rank

官方摘要:获取 System.Array 的秩(维数)。 例如,一维数组返回 1,二维数组返回 2,依次类推。

返回结果:System.Array 的秩(维数)。

简单理解:获取数组维数。

代码示例:

int[,] arr = new int[2, 3] { { 14, 25, 9 }, { 5, 74, 56 } };
Console.WriteLine(arr.Rank); ---> 2

LongLength

官方摘要:获取一个 64 位整数,该整数表示 System.Array 的所有维数中元素的总数。

返回结果:一个 64 位整数,表示 System.Array 的所有维数中元素的总数。

简单理解:获取数组长度,返回long。

代码示例:

int[] arr = new int[5] { 1,5,6,8,7};
Console.WriteLine(arr.LongLength); ---> 5

Length

官方摘要:获取 System.Array 的所有维度中的元素总数。

返回结果:System.Array 的所有维度中的元素总数;如果数组中无元素,则为零。

简单理解:获取数组长度,返回int。

代码示例:

int[] arr = new int[5] { 1, 5, 6, 8, 7 };
Console.WriteLine(arr.Length); ---> 5

BinarySearch 

官方摘要:使用由数组中每个元素和指定对象实现的 System.IComparable 接口,在整个一维排序数组中搜索特定元素。

返回结果:如果找到 value,则为指定 array 中的指定 value 的索引;否则为负数。 如果找不到 value 且 value 小于 array 中的一个或多个元素,则返回的负数是大于value 的第一个元素的索引的按位求补。 如果找不到 value 且 value 大于 array 中的所有元素,则返回的负数是(最后一个元素的索引加1)的按位求补。 如果使用非排序的 array 调用此方法,返回值则可能不正确并且可能会返回负数,即使 value 存在于 array 中也是如此。

简单理解:二分法查询元素,找到则返回其下标,否则返回负数。使用前需对数组排序。

代码示例:

string[] arr = new string[5] { "a", "ab", "abc", "abcd","abcde" };
Console.WriteLine(Array.BinarySearch(arr, "abc")); ---> 2
//参数说明:
//arr:数组标识符
//"abc":查询元素

Clear

 官方摘要:将数组中的某个范围的元素设置为每个元素类型的默认值。

简单理解:清除指定范围元素。

代码示例:

string[] arr = new string[5] { "a", "ab", "abc", "abcd","abcde" };
Array.Clear(arr,1,3);

foreach (var item in arr)
{
     Console.WriteLine(item);
}

--->
a



abcde

//参数说明:
//arr:需要清除其元素的数组
//1:要清除的一系列元素的起始索引
//3:要清除的元素数

ConstrainedCopy

官方摘要:复制 System.Array 中的一系列元素(从指定的源索引开始),并将它们粘贴到另一 System.Array 中(从指定的目标索引开始)。 保证在复制未成功完成的情况下撤消所有更改。

简单理解:将某数组中指定范围元素复制到另一数组指定位置。

代码示例:

string[] arr1 = new string[3] { "cc", "dd", "ee"};
string[] arr2 = new string[5] { "aa", "bb", "c", "d", "e" };

Array.ConstrainedCopy(arr1, 0, arr2,2,3);

foreach (var item in arr2)
{
    Console.WriteLine(item);
}

--->
"aa"
"bb"
"cc"
"dd"
"ee"

//参数说明:
//arr1:包含要复制的数据的 System.Array(要被复制的数组)
//0:复制开始处的索引/下标
//arr2:接收数据的 System.Array(复制到的数组)
//2:存储开始处的索引/下标
//3:复制的元素数目

Copy

官方摘要:复制 System.Array 中的一系列元素,将它们粘贴到另一 System.Array 中。

简单理解:将某数组中指定范围元素复制到另一数组。

代码示例:

string[] arr1 = new string[3] { "aa", "bb", "cc"};
string[] arr2 = new string[3];

Array.Copy(arr1, arr2,2);

foreach (var item in arr2)
{
    Console.WriteLine(item);
}

--->
aa
bb


//参数说明:
//arr1:要复制的数据的数组
//arr2:接收数据的数组
//2:要复制的元素数目
string[] arr1 = new string[3] { "aa", "bb", "cc"};
string[] arr2 = new string[3];

Array.Copy(arr1,1,arr2,0,2);

foreach (var item in arr2)
{
    Console.WriteLine(item);
}

--->
bb
cc


//参数说明:
//arr1:要复制的数据的数组
//1:复制开始处的arr1中的索引/下标
//arr2:接收数据的数组
//0:存储开始处的arr2中的索引/下标
//2:要复制的元素数目

 IndexOf

 官方摘要:在一个一维数组中搜索指定对象,并返回其首个匹配项的索引。

简单理解:查找元素,返回下标。

代码示例:(多种重载,不一一列出)

string[] arr1 = new string[3] { "aa", "bb", "cc" };

Console.WriteLine(Array.IndexOf(arr1, "bb")); ---> 1

LastIndexOf

官方摘要:搜索指定的对象,并返回一维 System.Array 中从第一个元素到指定索引的元素范围内最后一个匹配项的索引。

简单理解:从后查找元素,返回下标。

代码示例:(其它重载,不一一列出)

string[] arr1 = new string[4] { "aa", "bb", "bb" , "cc" };

Console.WriteLine(Array.LastIndexOf(arr1, "bb")); ---> 2

Resize 

官方摘要:将一维数组的元素数更改为指定的新大小。

简单理解:更改数组长度。

代码示例:

string[] arr = new string[4] { "aa", "bb", "cc" , "dd" };

Array.Resize(ref arr,5);

arr[4] = "ee";

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
aa
bb
cc
dd
ee

Reverse

官方摘要:反转一维 System.Array 中全部或某部分元素的元素顺序。

简单理解:元素反转,交换位置。

代码示例:

string[] arr = new string[5] { "aa", "bb", "cc" , "dd" ,"ee"};

Array.Reverse(arr,1,4);

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
aa
ee
dd
cc
bb

Sort

官方摘要:使用 System.Array 中每个元素的 System.IComparable 实现,对整个一维 System.Array 中的元素进行排序。

简单理解:为数组元素排序。

代码示例:(其它重载,不一一列出)

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

Array.Sort(arr);

foreach (var item in arr)
{
    Console.WriteLine(item);
}

--->
1
2
3
4
5

CopyTo 

官方摘要:从指定的目标数组索引处开始,将当前一维数组的所有元素复制到指定的一维数组中。 

简单理解:将一数组所有元素复制到另一数组指定位置。

代码示例:

int[] arr1 = new int[3] { 5, 4, 3 };
int[] arr2 = new int[5];

arr1.CopyTo(arr2,1);

foreach (var item in arr2)
{
    Console.WriteLine(item);
}

--->
0
5
4
3
0

GetLength/GetLongLength

官方摘要:获取一个 32/64 位整数,该整数表示 System.Array 的指定维中的元素数。

简单理解:获取数组指定维元素个数。

代码示例:

int[,,] arr1 = new int[2,3,4];

Console.WriteLine(arr1.GetLength(0));
Console.WriteLine(arr1.GetLength(1));
Console.WriteLine(arr1.GetLength(2));

--->
2
3
4

GetValue

官方摘要:获取System.Array 中指定位置的值。

简单理解:获取数组指定下标的元素。

代码示例:(其它重载,不一一列出)

int[,] arr = new int[2, 3] { {2,3,4 },{5,6,7 } };

Console.WriteLine(arr.GetValue(1,1));

--->
6

SetValue

官方摘要:更改System.Array 中指定位置的值。

简单理解:更改数组指定下标的元素。

代码示例:(其它重载,不一一列出)

int[,] arr = new int[2, 3] { {2,3,4 },{5,6,7 } };
arr.SetValue(8,1,1);

Console.WriteLine(arr[1,1]);

--->
8

Enumerable类

Contains

官方摘要:确定序列是否包含指定的元素使用的默认相等比较器。

简单理解:判断数组是否包含指定元素。

代码示例:

int[] arr = new int[3] {5,6,7};

Console.WriteLine(arr.Contains(8));

--->
False

Sum

官方摘要:确定序列是否包含指定的元素使用的默认相等比较器。

简单理解:求和

Max

官方摘要:返回序列中的最大值。

简单理解:求最大值

Min

官方摘要:返回序列中的最小值。

简单理解:求最小值

Average

官方摘要:计算序列的平均值。

简单理解:求平均值

代码示例:

int[] arr = new int[3] {5,6,7};

Console.WriteLine(arr.Sum());
Console.WriteLine(arr.Max());
Console.WriteLine(arr.Min());
Console.WriteLine(arr.Average());

--->
18
7
5
6

Count

官方摘要:返回序列中的元素数。

简单理解:获取长度,数组中只有一维数组可用。

代码示例:

int[] arr = new int[3];

Console.WriteLine(arr.Count());

--->
3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值