LIST 2●執行裝箱的C#代碼。將數值直接代入對象中。運行代碼后,輸出0和1。也就是說變量a和o沒有同一性(點擊放大) 圖2●C#中的裝箱法。對存放于內存堆棧區中的int型結構體(strUCts)裝箱時,就會靜靜地在內存堆區中生成對象。因此就無法確保與初始值的匹配性。(點擊放大) 筆者利用裝箱法,用C#試著寫了一段與在Java的Vector矢量類中保存數值類似的代碼(LIST 3)。雖然ArrayList類要引數中提取對象型變量,但這里由于通過直接int型變量,因此代碼非常整潔。
不過,并沒有解決多余的內存消耗和數值的同一性問題。因為只是單純地實現了自動向對象的轉換(圖3)。 LIST 3●與LIST 1起相同作用的C#代碼。由于具有裝箱法,因此可以直接向ArrayList中追加數值