今天來談談結構
陣列內的資料是一群同性質且資料型態相同資料的集合,程式中同時要處理多個不同性質的資料,就需要多個陣列來處理,不但使程式長還難維護,所幸C#提供另外一種 使用者自定型別(User Defined Type) 稱為 結構(Structure) 或稱 紀錄(Record) ,它允許將不同資料型態的資料放在一起構成一筆紀錄,多筆資料時也不用像陣列必須分成多個陣列來存放資料。
要怎麼使用結構呢?那就讓我們來說說結構變數。
結構是由一些邏輯相關的資料欄或稱欄位(Field)所構成。結構必須給予結構名稱,且每一個欄位也要給予一個欄位名稱和必須要定義,然後再給予宣告和初值才能使用。
//定義結構
struct 結構名稱{
資料型態1 欄位名稱1;
資料型態2 欄位名稱2;
資料型態3 欄位名稱3;
}
//宣告結構變數
struct 結構名稱 結構變數;
//設定結構變數初值
結構名稱.欄位名稱 = 設定值;
這就是結構的用法,很簡單對吧!
在來是結構陣列,上面的用法只能儲存一筆資料,代表一個結構變數只能代表一筆資料,若有很多筆資料就需要使用到結構陣列。
如定義結構名稱為student的結構陣列,每筆紀錄是由座號(NO)、姓名(Name)、成績(score)三個不同資料型態的欄位構成一筆紀錄,來儲存5個學生的成績資料,該紀錄如下表:
座號欄位 | 姓名欄位 | 成績欄位 |
---|---|---|
1 | Tom | 75 |
2 | Paul | 80 |
3 | Jack | 90 |
4 | Mary | 100 |
5 | Jane | 65 |
程式如下:
//定義student結構
struct student{
public int NO;
public string Name;
public int score;
}
//宣告a為具有student結構的結構陣列,大小為5
student[] a = new student[5];
//設定結構變數的初值
a[0].NO = 1; a[0].Name = "Tom"; a[0].score = 75;
a[1].NO = 2; a[1].Name = "Paul"; a[0].score = 80;
a[2].NO = 3; a[2].Name = "Jack"; a[0].score = 90;
a[3].NO = 4; a[3].Name = "Mary"; a[0].score = 100;
a[4].NO = 5; a[4].Name = "Jane"; a[0].score = 65;
當然也可以將上面宣告跟設定初值合併成下面敘述:
student[] a = new student[]{
new student(){NO = 1, Name = "Tom", score = 75},
new student(){NO = 2, Name = "Paul", score = 80},
new student(){NO = 3, Name = "Jack", score = 90},
new student(){NO = 4, Name = "Mary", score = 100},
new student(){NO = 5, Name = "Jane", score = 65},
};
結構我就先講到這邊拉~
掰掰~