前言
數(shù)組作為一種數(shù)據(jù)結(jié)構(gòu),常用在存儲同一類型的多個(gè)對象中。而C#在使用數(shù)組時(shí),通過中括號[] 這一特殊的記號來聲明,初始化和使用數(shù)組。Array 類是所有數(shù)組的基類,并且提供了創(chuàng)建、操作、搜索和排序數(shù)組的功能。本文了解如何使用 Array 類方法對數(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方法可用于對數(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ù)組中的對象相同的對象。數(shù)組的淺表副本僅復(fù)制數(shù)組的元素,無論是引用類型還是值類型,但它不會(huì)復(fù)制引用引用的對象。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ù)組的常見操作,希望本文對您有所收獲,如有不到之處,請多多包涵。
該文章在 2025/1/2 9:03:24 編輯過