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預...