類和結構體區別

2021-06-23 00:40:15 字數 586 閱讀 5680

c#中類和結構體區別:

類是有行動、方法和成員的有機體,而結構體是活生生的有機體。

1、  值型別和引用型別

類是引用型別,繼承system.object,資料儲存在堆上,結構體值型別,繼承system.valuetype,資料儲存在堆疊上;堆疊上的物件有編譯器自動建立和銷毀,所以堆疊的執行效率要高些,但是堆疊資源有限,不適合出力複雜的大的邏輯,所以結構體出力小物件,類處理複雜的商務邏輯;類建立乙個新物件,只是建立了乙個引用,新物件的修改同時也會反映到源物件上,而結構體建立乙個新物件後是創造源物件的乙個副本,新物件的任何修改不會反應到源物件上。

2、繼承性

類可完全擴充套件,可以繼承基類和介面,也可以被繼承,除非顯示被宣告為sealed.

結構體不能繼承類或者結構體,雖然沒有顯示宣告為sealed但是預設為sealed,但是可以繼承介面

3、  內部結構

類有預設的建構函式、析構函式,可以使用abstract,sealed,protect等修飾符,必須用new初始化;

結構體沒有預設的建構函式,沒有析構函式,可以自定義帶引數的建構函式來初始化字段,但是不能定義不帶引數的建構函式,不能初始化實力字段,可以不用new初始化;

結構體和類的區別

結構體和類的區別 結構體struct 的預設成員訪問許可權是public 類class的預設成員訪問許可權是private ps 以前總以為struct不能定義成員函式 包括建構函式 析構函式 其實是錯誤的。在c 裡面,class和struct除了上面的不同,其他完全一致。可能有人會想,那為什麼c ...

結構體和類的區別

1.c的結構體和c 結構體的區別 1.1 c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。1.2 c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected,private三...

結構體和類的區別

結構體和類的區別 1.c的結構體和c 結構體的區別 1.1 c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。1.2 c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected...