日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
詳談.NET值類型和引用類型

對于如何更好的理解.NET值類型和引用類型,我們將從內(nèi)存的基本布局開始入手,希望通過本文能對大家了解.NET值類型和引用類型有所幫助。

10年積累的成都網(wǎng)站設(shè)計、成都做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有泌陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

深入理解.NET值類型和引用類型,這是.NET開發(fā)人員取得長期成功的關(guān)鍵,下面從內(nèi)存布局角度詳細給大家說明一下值類型和引用類型:

值類型的內(nèi)存結(jié)構(gòu):

引用類型的內(nèi)存結(jié)構(gòu):

引用類型的實例比值類型的實例多了兩個附加的字段,SyncBlockIndex和RTTI(運行時類型信息)指針,指向一個方法表結(jié)構(gòu),所以描述為 MethodTablePtr和TypeObjectPtr都是可以的,〈CLR Via C#〉這本書的第一版標(biāo)注的是MethodTablePtr,第二版標(biāo)注的是TypeObjectPtr,這里應(yīng)該是Jeffery認為 TypeObjectPtr更加準(zhǔn)確。

另外,除Object和ValueType類型以外,值類型不能繼承其他任何類型,同時也無法作為其他值類型的基類,所以一般情況下,也就無需方法表指針 了!需要調(diào)用調(diào)用從Object或ValueType繼承的一些方法的時候,需要一個方法表指針,這時就需要對值類型進行裝箱!

看一個例子: 

 
 
 
 
  1. public struct A  
  2. {  
  3. public overrid String ToString()  
  4. {  
  5. return "A++";  
  6. }  
  7. }  
  8.  
  9. static void Main(string[] args)  
  10. {  
  11. A a=new A();  
  12. a.ToString();//這時不會發(fā)生裝箱,因為C#編譯器發(fā)現(xiàn)結(jié)構(gòu)體A重寫了ToString方法,于是產(chǎn)生直接調(diào)用ToString的IL指 令,而且不可能有類型繼承自結(jié)構(gòu)體A,所以編譯器可以確定這里不會有多態(tài)性的行為,于是就無須方法表指針,也無須裝箱!  
  13. a.GetType();//這里會發(fā)生裝箱,因為結(jié)構(gòu)體A本身沒有實現(xiàn)GetType方法,需要調(diào)用繼承的GetType方法,這時需要一個方法表指針來訪問方法表,這時需要通過裝箱來獲得! 

分享題目:詳談.NET值類型和引用類型
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/dpshghh.html