前言
数组作为一种数据结构,常用在存储同一类型的多个对象中。而C#在使用数组时,通过中括号[] 这一特殊的记号来声明,初始化和使用数组。Array 类是所有数组的基类,并且提供了创建、操作、搜索和排序数组的功能。本文了解如何使用 Array 类方法对数组进行搜索、排序和执行其他操作。
Array 类
Array 类是所有数组的基类,它是一个抽象基类,这也意味着无法使用Array类创建实例。它处在System命名空间中。
1、常用属性
属性 | 描述 |
---|
IsFixedSize | 返回一个数组是否具有固定大小的值。 |
IsReadOnly | 返回一个数组是否为只读数组的值。 |
LongLength | 返回一个64位整数的数组维度中的元素总数。 |
Length | 返回一个32位整数的数组维度中的元素总数。 |
Rank | 返回数组的维数。 |
2、创建数组
Array 类提供用于构造数组的 CreateInstance 方法。CreateInstance 方法将第一个参数作为项目的类型,第二个和第三个参数是维度及其范围。创建数组后,我们使用 SetValue 方法添加项。
// 创建一维数组
Array expressArray = Array.CreateInstance(typeof(String), 3);
expressArray.SetValue("SF", 0);
expressArray.SetValue("JD", 1);
expressArray.SetValue("ZTO",2);
3、搜索数组
Array 类的 BinarySearch 方法可用于搜索数组中的元素。此方法不支持搜索包含负索引,因此使用此方法之前,必须先排序数组。
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
Array.Sort(platformArray);
int searchIndex = Array.BinarySearch(platformArray, "PDD");
if (searchIndex >= 0)
{
Console.WriteLine($"元素位于数组的第{searchIndex}个位置");
}
else
{
Console.WriteLine("数组未找到元素");
}
Array 类的IndexOf方法可用于来搜索数组中的元素。
string[] platformArray = new string[4] {"TB","TM","JD","PDD"}
int searchIndex = Array.IndexOf(platformArray, "JD");
if (searchIndex >= 0)
{
Console.WriteLine($"元素位于数组的第{searchIndex}个位置");
}
else
{
Console.WriteLine("数组未找到元素");
}
4、排序数组
Array 类的Sort方法可用于对数组项进行排序。
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
Array.Sort(platformArray);
foreach (string item in platformArray)
{
Console.WriteLine(item);
}
5、获取和设置值
Array 类的 GetValue 和 SetValue 方法可用于获取和设置数组项的值。
Array platformArrayx = Array.CreateInstance(typeof(String), 2, 4);
platformArrayx.SetValue("TB", 0, 0);
platformArrayx.SetValue("淘宝", 0, 1);
platformArrayx.SetValue("JD", 0, 2);
platformArrayx.SetValue("京东", 0, 3);
platformArrayx.SetValue("TM", 1, 0);
platformArrayx.SetValue("天猫", 1, 1);
platformArrayx.SetValue("PDD", 1, 2);
platformArrayx.SetValue("拼多多", 1, 3);
for (int i = 0; i < platformArrayx.GetLength(0); i++)
{
for (int j = 0; j < platformArrayx.GetLength(1); j++)
{
Console.WriteLine($"{i.ToString()},{j.ToString()}: {platformArrayx.GetValue(i, j)}");
}
}
6、反转数组
Array 类的 Reverse 静态方法反转数组中项的顺序。
Array.Reverse(platformArray);
foreach (string item in platformArray)
{
Console.WriteLine(item);
}
7、清除数组
Array 类的 Clear 方法删除数组的所有项并将其长度设置为零。不会删除项目。只需清除项目的值。
Array.Clear(platformArray, 1, 2);
foreach (string item in platformArray)
{
Console.WriteLine(item);
}
8、复制数组
Array 类 Copy 方法将数组的一部分复制到另一个数组。
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
string[] copyArray = new string[platformArray.Length];
Array.Copy(platformArray, copyArray, platformArray.Length);
9、克隆数组
Array 类 Clone 方法创建数组的浅表副本。新数组中的引用指向与原始数组中的对象相同的对象。数组的浅表副本仅复制数组的元素,无论是引用类型还是值类型,但它不会复制引用引用的对象。string[] clonedArray = (string[])platformArray.Clone();
10、获取数组的大小
GetLength 方法返回数组总大小。GetLowerBound 和 GetUppperBound 方法分别返回数组的下限和上限。
Console.WriteLine(platformArray.GetLength(0).ToString());
Console.WriteLine(platformArray.GetLowerBound(0).ToString());
Console.WriteLine(platformArray.GetUpperBound(0).ToString());
// 数组转集合
List<string> list = new List<string>(platformArray);
// 集合转数组
string[] anotherArray = list.ToArray();
12、数组填充
Array 类Fill方法可以填充数组。
int[] numbers = new int[5];
Array.Fill(numbers, 0);
13、数组拼接
使用Array类的Copy方法可以将二个数组进行拼接。
// 第一个数组
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
// 第二个数组
string[] expressArray = { "JD", "SF", "JT", "ZTO", "YTO" };
// 拼接后数组
string[] concatArray = new string[platformArray.Length+expressArray.Length];
// 将第一个数组复制到拼接后数组
Array.Copy(platformArray, 0, concatArray, 0, platformArray.Length);
// 将第二个数组复制到拼接后数组
Array.Copy(expressArray, 0, concatArray, platformArray.Length, expressArray.Length);
小结
以上是通过Array类实现数组的常见操作,希望本文对您有所收获,如有不到之处,请多多包涵。
该文章在 2025/1/2 9:03:24 编辑过