C# 結構體 struct 的基本知識
阿新 • • 發佈:2021-06-21
結構就是幾個資料組成的資料結構,它與類共享幾乎所有相同的語法,但結構比類受到的限制更多。
結構是一種值的型別,通常用來封裝一組相關的變數,結構中可以包括建構函式、常量、欄位、方法、屬性、運算子、事件和巢狀型別等。但如果要同時包括上述幾種成員,則應該考慮使用類。結構實際是將多個相關的變數包裝成為一個整體使用。在結構體中的變數,可以是相同、部分相同,或完全不同的資料型別。例如,把公司裡的職員看作一個結構體,可以將個人資訊放入結構體中,主要包含姓名、年齡、出生年月、性別、籍貫、婚否、職務。
在 C# 中的結構與傳統的 C 或 C++ 中的結構不同。結構具有以下特點:
- 結構是值的型別。
- 向方法傳遞結構時,結構是通過傳值方式傳遞的,而不是作為引用傳遞的。
- 結構的例項化可以不使用new運算子。結構可以宣告建構函式,但它們必須帶引數。當您使用 New 操作符建立一個結構物件時,會呼叫適當的建構函式來建立結構。
- 如果不使用 New 操作符,只有在所有的欄位都被初始化之後,欄位才被賦值,物件才被使用。
- 一個結構不能從另一個結構或類繼承。所有結構都直接繼承自
System.ValueType
,後者繼承自System.Object
。 - 結構可以實現介面。介面可實現一個或多個介面。
- 在結構中初始化例項欄位是錯誤的。// 不能在結構中初始化欄位。
- 結構成員不能指定為
abstract
、virtual
或protected
。
說明:
在結構宣告中,除非欄位被宣告為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