麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

裝箱與拆箱的走走停停

2019-11-14 13:45:28
字體:
來源:轉載
供稿:網友

上一篇簡單述說了值類型與引用類型的關系,那么不能不說說值類型的拆箱與裝箱:

      將值類型裝箱就相當于把它包裝起來給人看,"你瞧,我現在是引用類型了",顧名思義拆箱就是將包裝卸下來"其實我是值類型"。

   在將值類型利用裝箱機制打包成引用時他要進行許多的打扮:

      1.首先要給他一個空間(在托管堆中分配內存),多大呢,要必須要容得下包裝所需要的物件化妝品之類的(各自段所需的內存量),此外還要有專家設計師吧(類型對象指針和同步塊索引兩個額外的成員);

      2.空間有了,他就要開始將自己的東西和物件搬過來(只類型的字段復制到新分配的堆內存);

      3.一切準備就緒,不過此時出了意外,他被人頂替冒充了,而冒充它的那個人很清楚這個房間的位置(返回對象地址,改地址就是對象引用)。

上面解釋可能會有點牽強,給個例子一目了然:

 1 struct Point{public int x,y;}
2 public sealed class PRogram{ 3 public static void Main() 4 { 5 ArrayList a = new ArrayList(); 6 Point p; 7 p.x=1;p.y=1; 8 a.Add(p); 9 } 10 }

最簡單不過的代碼了,由于Add()方法參數是Object類型,所以在執行時要進行一次裝箱操作:Point值類型實例p中的字段會復制到新分配的Point對象中,已裝箱的Point對象的地址返回并傳給Add方法,需要說明的是Point對象此時是引用類型存在于堆中,Point值類型變量p可被重用,a已經不知道他的任何事情,由此可見已裝箱值類型生存期超過了未裝箱值類型的生存期。

-------------------------------------------------------------------------------

接下來說說拆箱:

  緊接上段代碼,如若Point p = (Point)a[0];代碼執行時,就進行了一次拆箱:

  一個人他知道了那個房間的地址,他把東西都要了回來,而東西可能已經變了(拆箱不是簡單的裝箱逆過程,它的代價比裝箱要低,拆箱就是獲取指針的過程,該指針指向包含在一個對象中的原始值類型(數據字段),指針指向的是已裝箱實例中未裝箱的部分,不要求在內存中復制任何字節);

  拆箱時要注意:1.包含"對已裝箱類型實例的引用"的變量為null時,會拋出異常(他都沒有房間,也沒有物件,你找個P啊)

         2.如果引用的對象不是所需值類型的已裝箱實例,拋出異常(張三的東西,李四來要,對方能給嗎);

 

--------------------------------------------------------------------------------

下面來做個腦筋急轉彎:

1 public static void Main(){2         int v=5;3         Object o = v;4         v=123;5         Console.WriteLine(v+","+(int)o);6 }

問:上面代碼發生了多少次裝箱?想好在打開。。。

三次,一次很好理解,剩下的兩次,對比Console.WriteLine參數即可理解
View Code

 

部分內容參考自《CLR C#》

   

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美xxxwww | 欧美 videos粗暴 | 色吧综合网 | 美女擦逼 | 香蕉成人在线观看 | 日本在线视 | 欧美成人视 | 亚洲一区二区三区高清视频 | 久在线观看福利视频69 | 久久久国产一区二区三区 | 国产精品999在线观看 | 91精品国产综合久久久动漫日韩 | 日本不卡一区二区在线观看 | 国产99久久精品一区二区 | www.777含羞草 | 免费永久在线观看黄网 | 日韩做爰视频免费 | 久久中文免费 | 精品日韩欧美 | 国产免费高清在线视频 | 青青草免费观看 | 精品无吗乱吗av国产爱色 | 国内精品久久久久久2021浪潮 | 久久激情免费视频 | 婷婷一区二区三区 | 欧美成年人视频在线观看 | 久久精品视频网站 | 亚洲一区在线观看视频 | 毛片免费在线视频 | 久久国产精品二国产精品中国洋人 | 依依成人综合 | 国产免费一级淫片 | 日本免费一区二区三区四区 | 日韩视频在线一区二区三区 | 欧美电影在线观看 | 久久思思爱 | 国产成人综合在线 | 久久亚洲精品视频 | 小视频免费在线观看 | 国产人成免费爽爽爽视频 | 国产毛片在线 |