前言
數(shù)組作為一種數(shù)據(jù)結(jié)構(gòu),常用在存儲(chǔ)同一類型的多個(gè)對(duì)象中。而C#在使用數(shù)組時(shí),通過中括號(hào)[] 這一特殊的記號(hào)來聲明,初始化和使用數(shù)組。Array 類是所有數(shù)組的基類,并且提供了創(chuàng)建、操作、搜索和排序數(shù)組的功能。本文了解如何使用 Array 類方法對(duì)數(shù)組進(jìn)行搜索、排序和執(zhí)行其他操作。
Array 類
Array 類是所有數(shù)組的基類,它是一個(gè)抽象基類,這也意味著無法使用Array類創(chuàng)建實(shí)例。它處在System命名空間中。
1、常用屬性
屬性 | 描述 |
---|
IsFixedSize | 返回一個(gè)數(shù)組是否具有固定大小的值。 |
IsReadOnly | 返回一個(gè)數(shù)組是否為只讀數(shù)組的值。 |
LongLength | 返回一個(gè)64位整數(shù)的數(shù)組維度中的元素總數(shù)。 |
Length | 返回一個(gè)32位整數(shù)的數(shù)組維度中的元素總數(shù)。 |
Rank | 返回?cái)?shù)組的維數(shù)。 |
2、創(chuàng)建數(shù)組
Array 類提供用于構(gòu)造數(shù)組的 CreateInstance 方法。CreateInstance 方法將第一個(gè)參數(shù)作為項(xiàng)目的類型,第二個(gè)和第三個(gè)參數(shù)是維度及其范圍。創(chuàng)建數(shù)組后,我們使用 SetValue 方法添加項(xiàng)。
// 創(chuàng)建一維數(shù)組
Array expressArray = Array.CreateInstance(typeof(String), 3);
expressArray.SetValue("SF", 0);
expressArray.SetValue("JD", 1);
expressArray.SetValue("ZTO",2);
3、搜索數(shù)組
Array 類的 BinarySearch 方法可用于搜索數(shù)組中的元素。此方法不支持搜索包含負(fù)索引,因此使用此方法之前,必須先排序數(shù)組。
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
Array.Sort(platformArray);
int searchIndex = Array.BinarySearch(platformArray, "PDD");
if (searchIndex >= 0)
{
Console.WriteLine($"元素位于數(shù)組的第{searchIndex}個(gè)位置");
}
else
{
Console.WriteLine("數(shù)組未找到元素");
}
Array 類的IndexOf方法可用于來搜索數(shù)組中的元素。
string[] platformArray = new string[4] {"TB","TM","JD","PDD"}
int searchIndex = Array.IndexOf(platformArray, "JD");
if (searchIndex >= 0)
{
Console.WriteLine($"元素位于數(shù)組的第{searchIndex}個(gè)位置");
}
else
{
Console.WriteLine("數(shù)組未找到元素");
}
4、排序數(shù)組
Array 類的Sort方法可用于對(duì)數(shù)組項(xiàng)進(jìn)行排序。
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
Array.Sort(platformArray);
foreach (string item in platformArray)
{
Console.WriteLine(item);
}
5、獲取和設(shè)置值
Array 類的 GetValue 和 SetValue 方法可用于獲取和設(shè)置數(shù)組項(xiàng)的值。
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、反轉(zhuǎn)數(shù)組
Array 類的 Reverse 靜態(tài)方法反轉(zhuǎn)數(shù)組中項(xiàng)的順序。
Array.Reverse(platformArray);
foreach (string item in platformArray)
{
Console.WriteLine(item);
}
7、清除數(shù)組
Array 類的 Clear 方法刪除數(shù)組的所有項(xiàng)并將其長度設(shè)置為零。不會(huì)刪除項(xiàng)目。只需清除項(xiàng)目的值。
Array.Clear(platformArray, 1, 2);
foreach (string item in platformArray)
{
Console.WriteLine(item);
}
8、復(fù)制數(shù)組
Array 類 Copy 方法將數(shù)組的一部分復(fù)制到另一個(gè)數(shù)組。
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
string[] copyArray = new string[platformArray.Length];
Array.Copy(platformArray, copyArray, platformArray.Length);
9、克隆數(shù)組
Array 類 Clone 方法創(chuàng)建數(shù)組的淺表副本。新數(shù)組中的引用指向與原始數(shù)組中的對(duì)象相同的對(duì)象。數(shù)組的淺表副本僅復(fù)制數(shù)組的元素,無論是引用類型還是值類型,但它不會(huì)復(fù)制引用引用的對(duì)象。string[] clonedArray = (string[])platformArray.Clone();
10、獲取數(shù)組的大小
GetLength 方法返回?cái)?shù)組總大小。GetLowerBound 和 GetUppperBound 方法分別返回?cái)?shù)組的下限和上限。
Console.WriteLine(platformArray.GetLength(0).ToString());
Console.WriteLine(platformArray.GetLowerBound(0).ToString());
Console.WriteLine(platformArray.GetUpperBound(0).ToString());
// 數(shù)組轉(zhuǎn)集合
List<string> list = new List<string>(platformArray);
// 集合轉(zhuǎn)數(shù)組
string[] anotherArray = list.ToArray();
12、數(shù)組填充
Array 類Fill方法可以填充數(shù)組。
int[] numbers = new int[5];
Array.Fill(numbers, 0);
13、數(shù)組拼接
使用Array類的Copy方法可以將二個(gè)數(shù)組進(jìn)行拼接。
// 第一個(gè)數(shù)組
string[] platformArray = new string[4] { "JD", "TM", "TB", "PDD" };
// 第二個(gè)數(shù)組
string[] expressArray = { "JD", "SF", "JT", "ZTO", "YTO" };
// 拼接后數(shù)組
string[] concatArray = new string[platformArray.Length+expressArray.Length];
// 將第一個(gè)數(shù)組復(fù)制到拼接后數(shù)組
Array.Copy(platformArray, 0, concatArray, 0, platformArray.Length);
// 將第二個(gè)數(shù)組復(fù)制到拼接后數(shù)組
Array.Copy(expressArray, 0, concatArray, platformArray.Length, expressArray.Length);
小結(jié)
以上是通過Array類實(shí)現(xiàn)數(shù)組的常見操作,希望本文對(duì)您有所收獲,如有不到之處,請(qǐng)多多包涵。
該文章在 2025/1/2 9:03:24 編輯過