C# 中的結構(struct)是一種值類型,它具有以下特性:
值類型:結構是值類型,這意味著當將結構賦值給另一個變量時,會創建一個新的副本。這與引用類型(如類)不同,引用類型的賦值操作只會復制引用,而不是對象本身。
繼承自 System.ValueType
:結構默認繼承自 System.ValueType
,這意味著它們具有一些內置的方法,如 Equals()
、GetHashCode()
和 ToString()
。
可空性:結構可以具有可空性(nullable),這意味著它們可以表示值的范圍之外的值。要聲明一個可空的結構,可以使用 ?
符號,例如 int?
。
默認構造函數:結構具有默認構造函數,即使沒有顯式定義,它也會自動創建一個包含所有成員變量的默認值的實例。
參數傳遞:結構作為參數傳遞給方法時,會按值傳遞。這意味著在方法內部對結構進行修改不會影響到原始變量。如果需要在方法內部修改原始結構,可以使用 ref
或 out
關鍵字。
結構體實例化:結構體實例化時,會自動調用默認構造函數創建一個包含所有成員變量默認值的實例??梢酝ㄟ^指定參數值顯式初始化結構體,例如 MyStruct myStruct = new MyStruct(value1, value2);
。
裝箱和拆箱:結構可以自動裝箱(將值類型轉換為引用類型)和拆箱(將引用類型轉換為值類型)。例如,可以將結構賦值給一個整型變量,也可以將整型變量賦值給結構變量。
內存分配:結構通常分配在棧上,而不是堆上。這意味著它們的內存分配和回收速度較快,但生命周期受限于它們所在的作用域。