C 中Array類的使用

2021-07-03 23:59:18 字數 4586 閱讀 4518

array類

提供建立、操作、搜尋和排序陣列的方法,因而在公共語言執行時中用作所有陣列的基類。

命名控制項: system

程式集:mscorlib

語法:public abstract class array:icloneable, ilist, icollection, ienumerable, istructuralcomparable, istructuraequatable

我們可以看出,array是乙個抽象類。

在部落格中所訴的用方括號宣告的陣列,其實是使用array類的表示法。在後台使用

c#語法,會建立乙個派生自抽象基類array的新類。

這樣就可以使用array類為每個c#陣列定義的方法和屬性了。

1、使用array建立陣列

前面已經提到, array是乙個抽象類,所以不能使用建構函式來建立陣列。但是可以使用靜態方法createinstance()建立陣列。

createinstance()的過載版本有很多:

//建立使用從零開始的索引、具有指定type和長度的一維array

public static array createinstance(type elementtype, int length)

例如:array my1darray = array.createinstance(typeopf(int32), 5);

//建立使用從零開始的索引、具有指定type和維長的多維array。維的長度在乙個32位整數陣列中指定。

public static array createinstance(type elementtype, params int lengths)

例如:int mylengthsarray = new int[4] ;

array my2darray = array.createinstance(typeopf(string), mylengthsarray);

//建立使用從零開始的索引、具有指定type和維長的多維array。維的長度在乙個64位整數陣列中指定。

public static array createinstance(type elementtype, params long lengths)

例如:int mylengthsarray = new int[4] ;

array my3darray = array.createinstance(typeopf(string), mylengthsarray);

//建立使用從零開始的索引、具有指定type和維長的二維array。

public static array createinstance(type elementtype, int length1, int length2)

例如:array my4darray = array.createinstance(typeopf(string), 2, 3);//建立乙個2*3的陣列

//建立使具有指定下限、指定type和維長的多維array。

public static array createinstance(type elementtype, int lengths, int lowerbounds)

其中, lengths表示要建立的array的每個維度的大小;lowerbounds表示要建立的array的每個維度的起始索引。

例如:int lengths = ;

int lowerbounds;

array my5darray = array.createinstance(typeopf(string), lengths , lowerbounds);//建立乙個2*3的陣列,第一維基於1, 第二維基於10

//建立使用從零開始的索引、具有指定type和維長的三維array。

public static array createinstance(type elementtype, int length1, int length2, int length3)

例如:array my5darray = array.createinstance(typeopf(string), 2, 3, 4);

2、設定和獲取陣列的元素

使用setvalue()函式設定陣列的元素,setvalue()有許多過載的版本

使用getvalue()函式來獲取陣列的元素,getvalue()有許多過載的版本

例如:// creates and initializes a one-dimensional array.

string myarr1 = new string[5];

// sets the element at index 3.

myarr1.setvalue( "three", 3 );

console.writeline( "[3]: ", myarr1.getvalue( 3 ) );

// creates and initializes a two-dimensional array.

string[,] myarr2 = new string[5,5];

// sets the element at index 1,3.

myarr2.setvalue( "one-three", 1, 3 );

console.writeline( "[1,3]: ", myarr2.getvalue( 1, 3 ) );

// creates and initializes a three-dimensional array.

string[,,] myarr3 = new string[5,5,5];

// sets the element at index 1,2,3.

myarr3.setvalue( "one-two-three", 1, 2, 3 );

console.writeline( "[1,2,3]: ", myarr3.getvalue( 1, 2, 3 ) );

// creates and initializes a seven-dimensional array.

string[,,,,,,] myarr7 = new string[5,5,5,5,5,5,5];

// sets the element at index 1,2,3,0,1,2,3.

int myindices = new int[7] ;

myarr7.setvalue( "one-two-three-zero-one-two-three", myindices );

console.writeline( "[1,2,3,0,1,2,3]: ", myarr7.getvalue( myindices ) );}}

/*上訴**的輸出:

[3]: three

[1,3]: one-three

[1,2,3]: one-two-three

[1,2,3,0,1,2,3]: one-two-three-zero-one-two-three

*/

3、複製陣列

複製陣列會使陣列實現icloneable介面,這個介面定義的clone()方法會建立陣列的淺表副本。

但是如果陣列的元素包含引用型別,則不複製元素,只複製引用。

除了clone()之外,還有array.copy方法建立淺表副本,二者的區別詳見部落格

4、排序

array類使用quicksort(快速排序)演算法對陣列中元素進行排序。sort()方法需要陣列中的元素實現icomparable介面。

(string、int都實現了icomparable介面)

同樣,sort方法有許多過載函式,下面簡單介紹幾個。

//使用array中每個元素的icomparable實現,對整個一維array中的元素進行排序。

public static void sort(array array)

例如:string names = ;

array.sort(names);

如果對陣列使用自定義類,就必須實現icomparable介面

例如:person類

public class person : icomparable

public person(string name, string ***)

public string name;

public string ***;

public override string tostring()

#region icomparable 成員

public int compareto(object obj)

return this.name.compareto(p.name);

}#endregion

} 這裡就可以對person物件陣列排序了:

person persons = ;

array.sort(persons);

foreach (person p in persons)

有關更詳細的sort()的使用方法會在後面的blog中更新。

C 中Array類精講

array 類是 c 中所有陣列的基類,它是在 system 命名空間中定義。array 類提供了各種用於陣列的屬性和方法,可看作擴充了功能的陣列 但不等同陣列 可以使用array類的屬性來對陣列進行各種操作。陣列的容量是固定的,而arraylist的容量可以根據需要自動擴充。arraylist提供...

Scala中Array的使用

總共分為array和arraybuffer,這裡的操作引數很多,很難說的完整,這裡就說幾個常用的。建議先看部落格中的list的部分,因為array這一部分很多都是一樣的。scala val a array 1,2,3 a array int array 1,2,3 scala a 4 res100 ...

C 陣列和Array類

陣列是用於儲存多個相同型別資料的集合。陣列是一種資料結構,它可以包含同一種資料型別的多個元素。宣告陣列 先定義陣列中元素的資料型別,其後是和變數名,例如 int intarray 宣告乙個整形一維陣列 初始化陣列 宣告陣列後,就必須為陣列分配記憶體。陣列是引用資料型別,故必須為它分配堆上的記憶體。為...