Home [C# 筆記] 結構(struct)資料型別
Post
Cancel

[C# 筆記] 結構(struct)資料型別

資料型別 - enum、struct、Nullable

  • 列舉(enum)與結構(struct)可以提高程式可讀性。
  • Nullable類別的宣告讓實值變數可以存放null值。

什麼是結構(struct)資料型別?

  • struct是一種用來宣告結構的關鍵字,在結構中包含相關變數。

宣告方式

1
2
3
4
5
6
[存取修飾詞] struct [結構名稱]
{
    [存取修飾詞][資料型別][變數名稱]; 
    [存取修飾詞][資料型別][變數名稱];
    ...
}
1
2
3
4
5
public struct Employee
{
    public int ID;
    public string Name;
}

叫用方式

1
[結構名稱][變數名稱];
1
Employee emp;

範例

透過struct來宣告一個員工結構,其結構成員包含:員工編號(ID)、中文姓名(CName)、年齡(Age)等,當使用者輸入員工資料時,會存放於對應的結構變數中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//宣告Employee結構
public struct Employee
{
    public string ID;
    public string CName;
    public int Age;
}

internal class Program
{
    static void Main(string[] args)
    {
        Employee employee; //宣告結構變數,以供叫用
        employee.ID = "E001";
        employee.CName = "Rii";
        employee.Age = 99;
        Console.WriteLine($"員工ID: {employee.ID}\r\n姓名: {employee.CName}\r\n年齡: {employee.Age}");
    }
}

C#中的結構體(struct)要使用new來實體化嗎?

struct屬於值類型,可以不用new,如果不new,結構體內的值就都是未賦值狀態,需要在使用之前賦值,不然編譯器會報錯。若new了,結構體會呼叫無參構造函數,會初始化內部的值,例如int就會初始化為0,現在使用編譯器就不會報錯了。

結構無需進行 new,就可以直接使用 (可new,也可不new)

比如:

1
2
MyStruct myStruct;
myStruct.Method();

對於類別(class)的話,這是錯誤的。

原因如下:
結構(stuct)為值類型,而new用於為引用類型(類別、物件、介面等)分配參考(記憶體位址),值類型儲存於Stack(堆疊)中,無需使用new

比如:
int x;MyStruct myStruct;
是一樣的道理
這的xmyStruct都是值型的

最後結構(stuct)可以用new 也可以不用new

C#中的结构体要使用new来实例化吗?
C#中的结构体要使用new来实例化吗?还是直接声明后直接使用?
Book: Visual C# 2005 建構資訊系統實戰經典教本

This post is licensed under CC BY 4.0 by the author.

[C# 筆記] 列舉(enum)資料型別

[C# 筆記] Nullable 類別