c#中類和結構體的區別

C#中類和結構體區別:

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

1、  值類型和引用類型

類是引用類型,繼承System.Object,數據存儲在堆上,結構體值類型,繼承System.ValueType,數據存儲在堆棧上;堆棧上的對象有編譯器自動創建和銷燬,所以堆棧的執行效率要高些,但是堆棧資源有限,不適合出力複雜的大的邏輯,所以結構體出力小對象,類處理複雜的商務邏輯;類創建一個新對象,只是創建了一個引用,新對象的修改同時也會反映到源對象上,而結構體創建一個新對象後是創造源對象的一個副本,新對象的任何修改不會反應到源對象上。

2、繼承性

類可完全擴展,可以繼承基類和接口,也可以被繼承,除非顯示被聲明爲sealed.

結構體不能繼承類或者結構體,雖然沒有顯示聲明爲sealed但是默認爲sealed,但是可以繼承接口

3、  內部結構

類有默認的構造函數、析構函數,可以使用abstract,sealed,protect等修飾符,必須用new初始化;

結構體沒有默認的構造函數,沒有析構函數,可以自定義帶參數的構造函數來初始化字段,但是不能定義不帶參數的構造函數,不能初始化實力字段,可以不用new初始化;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章