碰到這個問題兩次了,翻了兩次車的情況下總結一下裝箱和拆箱,這裡呢涉及到兩個東西,值類型還有引用類型 值類型是什麼:C#中的多數基本類型都是值類型,值類型包括簡單類型,枚舉類型,結構類型 引用類型是什麼:引用類型表示指向數據的指針或引用,可存儲對實際數據的引用。引用類型 在記憶體中的存儲位置僅包含堆上對 ...
碰到這個問題兩次了,翻了兩次車的情況下總結一下裝箱和拆箱,這裡呢涉及到兩個東西,值類型還有引用類型
值類型是什麼:C#中的多數基本類型都是值類型,值類型包括簡單類型,枚舉類型,結構類型
引用類型是什麼:引用類型表示指向數據的指針或引用,可存儲對實際數據的引用。引用類型
在記憶體中的存儲位置僅包含堆上對象的地址的引用引用類型包括類、介面、數組、字元串,引用類
型為null時,表示沒有引用任何對象。
好了,瞭解了上面這倆個東西之後就可以看看什麼是裝箱和拆箱了
裝箱和拆箱的過程會占用記憶體資源,因此都要儘量的避免使用裝箱和拆箱,
裝箱:將一個值類型轉換成引用類型,那麼這個過程就是裝箱
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性能好