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個元素給陣列。若該陣列的資料型別是int或double,則這N個變數的初始值就是0;若該陣列的資料型別是string,則這N個變數的初始值就是空字串;若該陣列的資料型別是bool,則這N個變數的初始值就是False。
2. 多維陣列的宣告與使用:
(1) 二維陣列:
(1-1) 二維陣列的宣告:
(1-1-1) 不進行初始化的宣告:
資料型態[,] 陣列名稱 = new 資料型態[N1,N2];
其中,N1和N2是整數,代表第一階的陣列(也就是該陣列名稱所代表的陣列本身)有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)會回傳3,GetLength(1)會回傳2,GetLength(2)就會出錯,因該陣列只有二維,也就是說只有第0層和第1層。
(2) 多維陣列(宣告與使用的方法,和二維陣列同理):
(2-1) 多維陣列的宣告:
資料型態[,, …] 陣列名稱 = new 資料型態[N1,N2,N3…];
其中,[,, …]表示,若是x維陣列,則中括號[]中就要有x-1個逗號 , 。
其中,[N1,N2,N3…]表示,若是x維陣列,則中括號[]中就要有x個N。
同樣,宣告完的陣列也會被賦予初始值。
如以下是宣告一個三維陣列:
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(陣列):將該陣列的順序顛倒。
留言列表