C#中結(jié)構(gòu)體和類(lèi)的區(qū)別
1.結(jié)構(gòu)體是值類(lèi)型,類(lèi)是引用類(lèi)型
雖然結(jié)構(gòu)體的初始化也使用了new操作符,可是結(jié)構(gòu)體對(duì)象依然分配在堆棧上而不是堆上,如果不使用“新建”(new),
那么在初始化所有字段之前,字段將保持未賦值狀態(tài),且對(duì)象不可用。
2.結(jié)構(gòu)體不能從另外一個(gè)結(jié)構(gòu)或者類(lèi)繼承,本身也不能被繼承,雖然結(jié)構(gòu)沒(méi)有明確的用sealed聲明,可是結(jié)構(gòu)是隱式的sealed
類(lèi)完全可擴(kuò)展的,除非顯示的聲明sealed 否則類(lèi)可以繼承其他類(lèi)和接口,自身也能被繼承
雖然結(jié)構(gòu)不能被繼承,可是結(jié)構(gòu)能夠繼承接口,方法和類(lèi)繼承接口一樣
3.結(jié)構(gòu):
沒(méi)有默認(rèn)的構(gòu)造函數(shù),但是可以添加構(gòu)造函數(shù)
沒(méi)有析構(gòu)函數(shù)
沒(méi)有abstract和sealed(因?yàn)椴荒芾^承)
不能有protected修飾符
可以不使用new初始化
在結(jié)構(gòu)中初始化實(shí)例字段是錯(cuò)誤的
類(lèi):
有默認(rèn)的構(gòu)造函數(shù)
有析構(gòu)函數(shù)
可以使用abstract和sealed
有protected修飾符
必須使用new初始化
作者: 王德田 發(fā)表于 2011-02-28 18:37 原文鏈接
評(píng)論: 0 查看評(píng)論 發(fā)表評(píng)論
最新新聞:
· Firefox 4 將是 Mozilla 最后一個(gè)大發(fā)行版(2011-03-01 17:06)
· 凡客V+商城月均銷(xiāo)售額過(guò)6000萬(wàn)(2011-03-01 16:33)
· 未來(lái),很好玩 —— 談下一代掌機(jī)(2011-03-01 16:31)
· Red Hat改變內(nèi)核源代碼打包方式(2011-03-01 16:29)
· 分析預(yù)計(jì)Facebook今年廣告營(yíng)收將接近22億美元(2011-03-01 16:25)
網(wǎng)站導(dǎo)航:博客園首頁(yè) 我的園子 新聞 閃存 小組 博問(wèn) 知識(shí)庫(kù)