裝箱(boxing)和拆箱(unboxing)是.NET提出得新概念!我們知道C#的所有類型都是由基類System.Object派生來的。如果在聲明這些數據類型的時候都在堆(HEAP)中分配內存,會造成極低的效率。
為了解決這個問題,.NET的值類型在棧中分配內存,而引用型是在堆中分配內存,初始化為null,引用類型是需要通過垃圾回收器來回收內存,而值類型超過其作用域,就會失效。
有時我們需要將一個值類型轉換為引用類型,而有時又需要把引用類型轉換為值類型,有人把這種操作分別稱之為裝箱操作和拆箱操作。
即,裝箱操作是指把一個值類型的數據轉換為對象類型的,如:
using System;
class class1
{
static void Main()
{
int a=0;
object obj = i;
.......
}
}
上面的代碼中,object obj = i;就是一個裝箱操作,它把一個值類型,即int型的數據隱式轉換為對象類型。
拆箱就是將一個引用類型的對象轉換成值類型!比如:
int a=0;
object obj=a; //裝箱操作
int b=(int)obj; //拆箱操作
從以上的操作過程中,我們看到裝箱操作是一種隱式數據類型轉換,是自動進行的,而拆箱操作是一種顯示的數據類型轉換,需要強制進行。
新聞熱點
疑難解答