close

1. 陣列的宣告:

(1) 宣告陣列時,也順便宣告元素初始值:

資料型態[] 陣列名稱 = {值一,值二,值三… };

如:

int[] A = {3,5,2};

(2) 不宣告初始值,但宣告陣列長度:

資料型態[] 陣列名稱 = new 資料型態[N];

如:

double[] A = new double[100];

(3) 分段式宣告:

資料型態[] 陣列名稱;    //先宣告陣列

陣列名稱 = new 資料型態[N];    //再宣告陣列長度,令陣列長度為N

陣列名稱[序數] = ;    //再逐一宣告值

如:

string[] A;

A=new string [3];

A[0] = "dd";

A[1] = "ff";

A[2] = "gg";

註:在宣告陣列長度為N時,會自動指派N個元素給陣列。若該陣列的資料型別是intdouble,則這N個變數的初始值就是0;若該陣列的資料型別是string,則這N個變數的初始值就是空字串;若該陣列的資料型別是bool,則這N個變數的初始值就是False

 

2. 多維陣列的宣告與使用:

(1) 二維陣列:

(1-1) 二維陣列的宣告:

(1-1-1) 不進行初始化的宣告:

資料型態[,] 陣列名稱 = new 資料型態[N1,N2];

其中,N1N2是整數,代表第一階的陣列(也就是該陣列名稱所代表的陣列本身)N1個子陣列(也就是N1個第二階陣列),而第二階陣列有N2個元素。整個陣列共有N1*N2個元素。這N1*N2個元素的初始值會被自動設定:若該陣列的資料型別是int,則所有元素初始值就都是0;若該陣列的資料型別是string,則所有元素初始值就都是空字串;若該陣列的資料型別是bool,則所有元素初始值就都是False

(1-1-2) 進行初始化的宣告:

資料型態[,] 陣列名稱 = new 資料型態{子陣列一, 子陣列二, 子陣列三…};

範例如:

int [,] array_2D=new int[,]{{1,2},{3,4},{5,6}};

當然,為了易讀,也可寫成:

int [,] array_2D=new int[,]

{

{1,2},

{3,4},

{5,6}

};

(1-2) 二維陣列元素值的設定與呼叫:

陣列名稱[序數一,序數二];     //元素值的呼叫

陣列名稱[序數一,序數二] = ;     //元素值的設定

如:

string[,] array_2D = new string[2,3];

array_2D[0, 0] = "AAA";

array_2D[0, 1] = "BBB";

array_2D[0, 2] = "CCC";

array_2D[1, 0] = "aaa";

array_2D[1, 1] = "bbb";

array_2D[1, 2] = "ccc";

(1-3) 二維陣列之長度、與其子陣列的長度:

(1-3-1) 陣列名稱.Length:此成員回傳整個陣列的元素個數。例如有個陣列宣告如為:int [,] array_2D=new int[,]{{1,2},{3,4},{5,6}};,則其長度就是2*3=6

(1-3-2) 陣列名稱.GetLength(K):其中,K是非負整數,從0算起。此方法回傳第K層子陣列的數目。例如有個陣列宣告如為:int [,] array_2D=new int[,]{{1,2},{3,4},{5,6}};,則GetLength(0)會回傳3GetLength(1)會回傳2GetLength(2)就會出錯,因該陣列只有二維,也就是說只有第0層和第1層。

(2) 多維陣列(宣告與使用的方法,和二維陣列同理)

(2-1) 多維陣列的宣告:

資料型態[,, …] 陣列名稱 = new 資料型態[N1,N2,N3…];

其中,[,, …]表示,若是x維陣列,則中括號[]中就要有x-1個逗號 ,

其中,[N1,N2,N3…]表示,若是x維陣列,則中括號[]中就要有xN

同樣,宣告完的陣列也會被賦予初始值。

如以下是宣告一個三維陣列:

int[,,] A = new int[2,3,1];

(2-2) 多維陣列元素值的設定與呼叫:

陣列名稱[序數一,序數二,序數三…];     //元素值的呼叫

陣列名稱[序數一,序數二,序數三…] = ;     //元素值的設定

(2-3) 多維陣列的複製:

利用Array.copy(多維陣列甲,多維陣列乙,N)方法,可將多維陣列甲中的前N個元素複製到多維陣列乙中。且複製完後,對多維陣列乙的操作不會影響多維陣列甲。範例如:

int[,] AA = new int[1000, 1000];

for (int i = 0; i < 1000; i++)

{

for (int j = 0; j < 1000; j++)

{ AA[i,j] = 1; }

}

 

int[,] BB = new int[1000, 1000];

Array.Copy(AA, BB, 1000*1000); 

(3) 不定長度多維陣列:

此種陣列,其每個子陣列的長度都可以不相同。

(3-1) 宣告之範例如下:

double[][][] Asss = new double[10][][];

for (int i1 = 0; i1 < 10; i1++)

{

double[][] Ass = new double[2*i1][];

for (int i2 = 0; i2 < 2*i1; i2++)

{

double[] As = new double[2*i2+i1];

for (int i3 = 0; i3 < 2*i2+i1; i3++)

{ As[i3] = i3*i2-5*i1;}

Ass[i2] = As;

}

Asss[i1] = Ass;

}

(3-2) 不定長度多維陣列元素值的設定與呼叫:

陣列名稱[序數一][序數二][序數三]…;     //元素值的呼叫

陣列名稱[序數一][序數二][序數三]…= ;     //元素值的設定

 

 

3. 陣列所能使用的成員及方法:

C#中的陣列是繼承自System.Array類別,此類別提供了一些成員和方法供陣列使用,如下:

(1) 常用的成員:

陣列名稱.IsFixedSize:其值的型態為bool。若其值為True,表示該陣列的長度已被宣告,否則其值為False

陣列名稱.IsReadOnly:其值的型態為bool。若其值為True,表示該陣列是唯獨的,否則其值為False

陣列名稱.Length:其值的型態為int。代表該陣列的長度。

陣列名稱.Rank:其值的型態為int。代表該陣列的維度。

(2) 常用的方法:

陣列名稱.GetType():回傳一個型態為System.Type的變數,表示該陣列的資料型態。

(3) 其他和陣列有關的方法:

Array.Equals(陣列一,陣列二):回傳一個bool。若其值為True,表示該陣列一陣列二相等,否則其值為False

Array.Clear(陣列,N,L):將該陣列自序數N開始連續共L個元素(包含序數N所對應的元素),都設為0或是false或空字串。

Array.IndexOf(陣列,):回傳一個int。搜尋該陣列中,是否有哪個元素的值是。若有則回傳其序數,若無則回傳-1。若有兩個以上元素的值是,則回傳序數最小者的序數。

Array.Sort(陣列):將該陣列進行遞增排序。

Array.Reverse(陣列):將該陣列的順序顛倒。

 

 

 

上一篇:參考資料-鍵盤按鍵名稱與按鍵編碼的對應表

下一篇:list

按此前往C#完整教學目錄

arrow
arrow

    埃伯 發表在 痞客邦 留言(0) 人氣()