1. 程式人生 > 其它 >C# 結構體 struct 的基本知識

C# 結構體 struct 的基本知識

結構就是幾個資料組成的資料結構,它與類共享幾乎所有相同的語法,但結構比類受到的限制更多

結構是一種值的型別,通常用來封裝一組相關的變數,結構中可以包括建構函式、常量、欄位、方法、屬性、運算子、事件和巢狀型別等。但如果要同時包括上述幾種成員,則應該考慮使用類。結構實際是將多個相關的變數包裝成為一個整體使用。在結構體中的變數,可以是相同、部分相同,或完全不同的資料型別。例如,把公司裡的職員看作一個結構體,可以將個人資訊放入結構體中,主要包含姓名、年齡、出生年月、性別、籍貫、婚否、職務。

在 C# 中的結構與傳統的 C 或 C++ 中的結構不同。結構具有以下特點:

  • 結構是的型別。
  • 向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作為引用傳遞的。
  • 結構的例項化可以不使用new運算子。結構可以宣告建構函式,但它們必須帶引數。當您使用 New 操作符建立一個結構物件時,會呼叫適當的建構函式來建立結構。
  • 如果不使用 New 操作符,只有在所有的欄位都被初始化之後,欄位才被賦值,物件才被使用。
  • 一個結構不能從另一個結構或類繼承。所有結構都直接繼承自System.ValueType,後者繼承自System.Object
  • 結構可以實現介面。介面可實現一個或多個介面。
  • 在結構中初始化例項欄位是錯誤的。// 不能在結構中初始化欄位。
  • 結構成員不能指定為 abstractvirtualprotected

說明:

在結構宣告中,除非欄位被宣告為const或static

,否則無法初始化。

例項:

class Program
{
    public struct Rect//定義一個矩形結構
    {
        public double width;//矩形的寬
        public double height;//矩形的高
        
        public Rect(double x, double y)
        {
            width = x;
            height = y;
        }
       
        public double Area()
        {
            return width * height;
        }
    }
    static void Main(string[] args)
    {
        Rect rect1;//建立矩形結構
        rect1.width = 5;//為矩形寬賦值
        rect1.height = 3;//為矩形高賦值
        Console.WriteLine("矩形面積為:" + rect1.Area());
        Rect rect2 = new Rect(6, 4);//使用建構函式例項化矩形結構
        Console.WriteLine("矩形面積為:" + rect2.Area());
    }

}

輸出:

矩形面積為:15
矩形面積為:24
請按任意鍵繼續. . .

結構有以下幾個基本的不同點:

  • 類是引用型別,結構是值型別。
  • 結構不支援繼承。
  • 結構不能宣告預設的建構函式。


參考:
1. [link-01](https://www.runoob.com/csharp/csharp-struct.html) // 菜鳥教程
2. 《C# 入門到精通》 -> P142