易道雲出品
今天小編和大家一起談談類(class)與結構(struct)的差別?
(1)預設的繼承通路權限: struct是public的,class是private的;
(2)class是引用類型,struct是值類型;
(3)class可以繼承類、接口和被繼承,struct隻能繼承接口,不能被繼承;
(4)class有預設的無參構造函數,有析構函數,struct沒有預設的無參構造函數,且隻能聲明有參的構造函數,沒有析構函數;
(5)class可以使用abstract和sealed,有protected修飾符,struct不可以用abstract和sealed,沒有protected修飾符;
(6)class必須使用new初始化,結構可以不用new初始化;
(7)class執行個體由垃圾回收機制來保證記憶體的回收處理,而struct變量使用完後立即自動解除記憶體配置設定。
從職能觀點來看,class表現為行為,而struct常用于存儲資料;
作為參數傳遞時,class變量以按址方式傳遞,而struct變量是以按值方式傳遞的。
如何選擇使用結構還是類:
(1)堆棧的空間有限,對于大量的邏輯的對象,建立類要比建立結構好一些;
(2)結構表示如點、矩形和顔色這樣的輕量對象,例如,如果聲明一個含有 1000 個點對象的數組,則将為引用每個對象配置設定附加的記憶體。在此情況下,結構的成本較低;
(3)在表現抽象和多級别的對象層次時,類是最好的選擇;
(4)大多數情況下該類型隻是一些資料時,結構是最佳的選擇。
今天就談到這裡,明天再見!!