自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳談.NET值類型和引用類型

開發(fā) 后端
我們這里將從內(nèi)存布局的角度來談?wù)?NET值類型和引用類型,希望本文能對大家有所幫助。

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

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

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

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

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

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

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

另外,除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方法,這時需要一個方法表指針來訪問方法表,這時需要通過裝箱來獲得! 

原文標題:從內(nèi)存布局角度談?wù)勚殿愋秃鸵妙愋停?/FONT>

鏈接:http://www.cnblogs.com/xuefeng1982/archive/2009/10/09/1579816.html

【編輯推薦】

  1. .NET Framework詳解之內(nèi)存機制
  2. .NET內(nèi)存映射文件原理、創(chuàng)建及進程通訊
  3. .NET內(nèi)存管理的最佳實踐
  4. .NET 4.0內(nèi)存映射文件詳解
  5. .NET真的不用管內(nèi)存嗎?從List﹤T﹥列表聊起
責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2009-08-19 16:39:44

C#值類型C#引用類型

2009-08-26 14:05:19

C#值類型和引用類型

2011-06-08 13:50:39

C#類型轉(zhuǎn)換

2021-08-27 07:47:06

引用類型

2011-06-08 13:03:52

C#值類型引用類型

2009-10-22 18:41:49

CLR VIA C#教

2013-05-23 17:21:16

C#

2009-08-31 14:34:46

C#值類型C#結(jié)構(gòu)類型

2009-07-24 17:43:35

循環(huán)引用ASP.NET AJA

2016-08-18 14:13:55

JavaScript基本數(shù)據(jù)引用數(shù)據(jù)

2017-02-27 08:34:09

JavaScript數(shù)據(jù)引用

2011-07-11 14:36:05

JAVA

2024-05-20 08:58:13

Java引用類型垃圾回收器

2009-10-15 17:33:45

VB.NET日期類型

2009-10-16 13:08:40

VB自定義類型參數(shù)

2009-08-14 17:09:48

C#引用類型

2009-08-27 16:39:26

C# String類型

2009-07-02 15:59:55

JSP數(shù)據(jù)類型

2022-04-17 10:29:10

TSTypeScript對象類型

2009-12-04 09:14:05

.NET 4.0
點贊
收藏

51CTO技術(shù)棧公眾號