裝箱和拆箱
任何值類型
引用類型可以和object(對象)類型之間進行轉換
裝箱轉換是指將一個值類型隱式或顯式地轉換成一個object類型
或者把這個值類型轉換成一個被該值類型應用的接口類型(interface
type)
把一個值類型的值裝箱
就是創建一個object實例並將這個值復制給這個object
裝箱後的object對象中的數據位於堆中
堆中的地址在棧中
被裝箱的類型的值是作為一個拷貝賦給對象的
如
int i =
;
object obj = i; //隱式裝箱
object obj = object(i); //顯式裝箱
if(obj is int) //int
Console
WriteLine(
OK
);
Console
WriteLine(obj
GetType()); //System
Int
有兩種方式來查看包裝以後的引用對象中包裝的原始數據的類型
要判斷原始類型是否是某個給定的原子類型
用is
如果要返回一個字符串
可以用object類的GetType方法
拆箱轉換是指將一個對象類型顯式地轉換成一個值類型
或是將一個接口類型顯式地轉換成一個執行該接口地值類型
注意裝箱操作可以隱式進行但拆箱操作必須是顯式的
拆箱過程分成兩步
首先
檢查這個對象實例
看它是否為給定的值類型的裝箱值
然後
把這個實例的值拷貝給值類型的變量
比如
int i =
;
object obj = i;
int j = (int)obj;
有兩種方式來查看包裝以後的引用對象中包裝的原始數據的類型
要判斷原始類型是否是某個給定的原子類型
用is
如果要返回一個字符串
可以用object類的GetType方法
拆箱轉換是指將一個對象類型顯式地轉換成一個值類型
或是將一個接口類型顯式地轉換成一個執行該接口地值類型
注意裝箱操作可以隱式進行但拆箱操作必須是顯式的
拆箱過程分成兩步
首先
檢查這個對象實例
看它是否為給定的值類型的裝箱值
然後
把這個實例的值拷貝給值類型的變量
比如
int i =
;
object obj = i;
int j = (int)obj;
From:http://tw.wingwit.com/Article/program/net/201311/12426.html