C#的值類型可以分為在棧上分配內存的值類型和在托管堆上分配內存的引用類型。
1、那么值類型和引用類型能否相互轉換呢?
答案是肯定的,C#通過裝箱和拆箱來實現兩者的相互轉換。
(1)、裝箱 ? ---把值類型強制轉換成引用類型(object類型)
(2)、拆箱 ? ---把引用類型強制轉換成值類型,這個過程也稱之為"強制轉換"
注:拆箱只能對以前裝箱的變量進行拆箱,代碼如下:
static void Main(string[] args){string num = "666";object obj = num;int unboxnum = (int)num;Console.WriteLine(unboxnum);}
在拆箱的過程中,確保得到的值有足夠的空間得到拆箱中的值中的所有的字節,代碼如下:
long num = 666666666666666666;object obj = num;checked{int unboxnum = (int)obj;Console.WriteLine(unboxnum);}
拆箱后的值無法接收long的值,所以報了InvalidCastException異常。