C 結構體與類的區別

2021-09-05 20:51:01 字數 827 閱讀 5489

c#中的結構體型別

struct 型別是一種值型別,通常用來封裝小型相關變數組,例如,矩形的座標或庫存商品的特徵。下面的示例顯示了乙個簡單的結構宣告。

public struct postaladdress

結構與類共享幾乎所有相同的語法,但結構比類受到的限制更多:

儘管結構的靜態字段可以初始化,結構例項字段宣告還是不能使用初始值設定項。

結構不能宣告預設建構函式(沒有引數的建構函式)或析構函式。

結構的副本由編譯器自動建立和銷毀,因此不需要使用預設建構函式和析構函式。實際上,編譯器通過為所有字段賦予預設值(參見預設值表)來實現預設建構函式。結構不能從類或其他結構繼承。

結構是值型別 -- 如果從結構建立乙個物件並將該物件賦給某個變數,變數則包含結構的全部值。複製包含結構的變數時,將複製所有資料,對新副本所做的任何修改都不會改變舊副本的資料。由於結構不使用引用,因此結構沒有標識 -- 具有相同資料的兩個值型別例項是無法區分的。c# 中的所有值型別本質上都繼承自 valuetype,後者繼承自 object。

編譯器可以在乙個稱為裝箱的過程中將值型別轉換為引用型別。

結構具有以下特點:

結構是值型別,而類是引用型別

向方法傳遞結構時.結構是通過傳值方式傳遞的,不是作為引用方式傳遞.

與類不同,結構的例項化可以不使用new運算子.

結構可以宣告建構函式,但他們必須帶引數

乙個結構不能從另乙個結構或類繼承,而且不能作為乙個類的基。所有結構都直接繼承自 system.valuetype,後者繼承自 system.object。

結構可以實現介面。

在結構中初始化例項欄位是錯誤的。

C 結構體與類的區別

學習了c 的物件導向,最常見的和寫的就是類結構體,下面主要介紹一下結構體和類的區別。首先類是c 中物件導向獨有的,但是c和c 中都有結構體,下面我們來看一下c和c 中結構體的區別。這裡主要從封裝 多型 繼承 封裝和訪問許可權幾個方面來說。1 c和c 中結構體的區別 1 多型 c的結構體內不允許有函式...

C 結構體與類的區別

相同之處 c 中的結構體中可以包含函式,也可以定義public private protected資料成員 定義了結構體之後,可以使用結構體名來建立物件,但是c中的結構體不允許含有函式 即 在c 中,結構體中可以有成員變數,成員函式,可從別的類繼承,也可以被別的類繼承,可以含有虛函式 不同之處 結構...

C 中結構體與類的區別

學習了c 的物件導向,最常見的和寫的就是類結構體,下面主要介紹一下結構體和類的區別。首先類是c 中物件導向獨有的,但是c和c 中都有結構體,下面我們來看一下c和c 中結構體的區別。這裡主要從封裝 多型 繼承 封裝和訪問許可權幾個方面來說。1 c和c 中結構體的區別 1 多型 c的結構體內不允許有函式...