一、裝箱和拆箱到底是什麼?
裝箱(box):把值類型對象轉爲引用類型的對象;
拆箱(unbox):把引用類型對象轉爲值類型的對象。
二、裝箱和拆箱的實際運用
下面是我們常寫的代碼,那麼在這個過程中,裝箱和拆箱到底是怎麼轉換的呢?
int n = 2;
object obj = (object)n;//裝箱,把數值類型int轉換爲引用類型object對象的。
int m = (int)obj;//拆箱,把引用類型的object轉換爲int類型。
我們可以看看C#代碼被編譯爲中間語言IL,就很清楚裝箱和拆箱的過程:
三、實際編碼過程中到底哪些是裝箱和拆箱呢?
1、引用類型之間不屬於裝箱和拆箱,裝箱、拆箱必須是: 值類型→引用類型 或 引用類型→值類型。
IComparable c = n;
int m = (int)c;
Console.WriteLine(m.ToString());
四、頻繁裝箱和拆箱會對程序性能造成什麼影響?
頻繁的拆箱和裝箱會對系統性能造成什麼影響?下面我們就從運行時間方面對其性能進行分析,
從上面運行的時間我們可以清楚的看出頻繁的進行裝箱和拆箱對引用程序運行的時間有很大的區別,因此,要寫一個高效的高性能的軟件,要注意裝箱和拆箱對應用程序造成的影響。