iT邦幫忙

2022 iThome 鐵人賽

DAY 13
0
Software Development

C#世界初探險系列 第 13

2022鐵人賽 Day 13 結構與結構陣列

  • 分享至 

  • xImage
  •  

今天來談談結構
陣列內的資料是一群同性質且資料型態相同資料的集合,程式中同時要處理多個不同性質的資料,就需要多個陣列來處理,不但使程式長還難維護,所幸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},
};

結構我就先講到這邊拉~
掰掰~


上一篇
2022鐵人賽 Day 12 規則與不規則陣列
下一篇
2022鐵人賽 Day 14 方法的使用
系列文
C#世界初探險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言