碰到這個問題兩次了,翻了兩次車的狀況下總結一下裝箱和拆箱,這裏呢涉及到兩個東西,值類型還有引用類型數組
值類型是什麼:C#中的多數基本類型都是值類型,值類型包括簡單類型,枚舉類型,結構類型性能
引用類型是什麼:引用類型表示指向數據的指針或引用,可存儲對實際數據的引用。引用類型spa
在內存中的存儲位置僅包含堆上對象的地址的引用引用類型包括類、接口、數組、字符串,引用類指針
型爲null時,表示沒有引用任何對象。code
好了,瞭解了上面這倆個東西以後就能夠看看什麼是裝箱和拆箱了對象
裝箱和拆箱的過程會佔用內存資源,所以都要儘可能的避免使用裝箱和拆箱,blog
裝箱:將一個值類型轉換成引用類型,那麼這個過程就是裝箱接口
int i=1; //聲明一個int型的變量i object obj=i; //將這個值裝箱進一個對象應用
拆箱:將一個引用類型轉換成值類型,那麼這個過程就是拆箱內存
int i=1; object obj=i; int j=(int) obj; //執行拆箱操做
裝箱拆箱的過程都會極大的破壞程序的性能,我以前用的多的都是泛型操做,沒去深刻的理解這個概念,用的少,也算是補償本身的一點不足之處吧資源
那麼拆箱跟裝箱的損失能夠經過使用泛型集合類來補償,能夠用List<T>和Dictory<Tkey,Tvalue>泛型來代替ArrayList和HashTable,即便是List<object>
也會比ArrayList性能好