1. 程式人生 > >C# 十、陣列的基本操作

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