裝箱轉換是指將一個值類型隱式地轉換成一個object類型,或者把這個值類型轉換成一個被該值類型應用的接口類型(interface-type)。把一個值類型的值裝箱,也就是創建一個object實例並將這個值復制給這個object,比如:
int i=10;
object obj=i;
用下圖可以表示裝箱的過程:
我們也可以用顯式的方法來進行裝箱操作:
int i=10;
object obj=object(i);
我們可以假想存在一個boxing類型,其聲明如下:
class T_Box
{
T value;
T_Box(Tt){
value=t;
}//該類型的構造函數
}
這裡T表示將要裝箱的值的類型,它可以是int、char、enum等等。現在我們要將類型為T的值v裝箱,其執行過程為:執行new T_Box(v),將返回結果的實例作為對象類型的值,那麼下面的語句:
int i=10;
object obj=i;
等價於:
int i=10;
object obj=new int_Box(i); //裝i裝箱成對象obj
我們看一下下面的程序。
程序清單4-4:
using System class Test{ public static void Main(){ int i=10; object obj=i; //對象類型 if(obj is int){ Console.Write("The value of i is boxing!"); } i=20; //改變i的值 Console.WriteLine("int:i={0}",i); Console.WriteLine("object:obj={0}",obj); } } 輸出結果為: The value of i is boxing! int:i=20; object:obj=10; 這就證明了,被裝箱的類型的值是作為一個拷貝賦給對象的。