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