裝箱和拆箱
裝箱:就是將值類型,轉(zhuǎn)換為引用類型
拆箱:將引用類型,轉(zhuǎn)換為值類型
int n = 10;
object o = n;//裝箱。把n這個值類型,轉(zhuǎn)換為object這個引用類型,叫拆箱;
int m = (int)o;//拆箱。把o這個引用類型,強制轉(zhuǎn)換為值類型,叫裝箱。
代碼中應(yīng)該盡量避免裝箱或者拆箱,因為這會影響到系統(tǒng)性能。
string str = "123";? ?int a = Convert.ToInt32(str);//這語句,雖然是將引用類型轉(zhuǎn)換為了值類? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //型,但是并沒有任何裝箱或者拆箱操作。
因為發(fā)生裝箱或者拆箱有一個大條件,就是看兩種類型的值,是否發(fā)生了繼承關(guān)系。
有繼承關(guān)系,才有可能發(fā)生拆箱或裝箱;
但沒有繼承關(guān)系,則一定不會有拆箱或裝箱。
標簽: