class和struct的比較

2022-04-07 21:54:45 字數 1096 閱讀 5641

struct

是值型別使用,而

class

是引用型別使用.建立

struct

的時候是在棧上分配記憶體,而

class

是在託管堆上分配記憶體

. 這樣差別就出來了

: 當向棧上

push

的時候分配一塊記憶體

,當從棧上

pop的時候記憶體自動釋放

.  而在

clr的託管堆上就不同了,當你

new乙個

class

成乙個object

的時候分配一塊記憶體

. 但是當你使用完本物件銷毀的時候

,記憶體空間是

不能實時釋放的.要等

gc不定時間進行收集

.所有出於效能方面的考慮

我們在寫程式的時候能構使用

struct

的地方,

就盡量不要使用

class

關於型別轉換中的is和

as的使用

is作為運算子出現在型別轉換中的

.其作用是檢查物件的執行時型別是否與給定型別相容

,在這種型別相容性判定中要進行一次型別轉換

. 然後根據型別的相容性進行其他處理工作

.as也是乙個運算子

, 對某個物件進行

as操作後

分為兩種情況

1.如果型別相容

操作成功

就會返回

as後的新型別

2.如果操作失敗就會返回

null.

if(this.findcontrol("mycheck") is system.checkbox) //m

處很明顯以上操作在m和

n處共進行了

兩次型別轉換

.如果現在改成這麼寫

system.checkbox tempcheck= this.findcontrol("mycheck") as system.checkbox;//l

處if(tempcheck!=null

現在就只是在l處

進行了一次型別轉換

.

struct和class的關係

一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。除了這兩點,class和struct基本就是乙個東西。語法上...

struct和class的區別

1.值型別與引用型別 結構是值型別 值型別在堆疊上分配位址,所有的基型別都是結構型別,例如 int 對應system.int32 結構,string 對應 system.string 結構 通過使用結構可以建立更多的值型別 類是引用型別 引用型別在堆上分配位址 堆疊的執行效率要比堆的執行效率高,可是...

class和struct的區別

從語法上,在c 中 只討論c 中 class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預...