日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

C#裝箱拆箱

系統 2873 0

C#中的數據類型包括值類型、引用類型和指針類型,而指針類型只有在不安全代碼中使用。值類型包括簡單類型、結構和枚舉,引用類型包括類、接口、委托、數組和字符串等。為了保證效率,值類型是在棧中分配內存,在聲明時初始化才能使用,不能為NULL,而引用類型在堆中分配內存,初始化時默認為NULL。值類型超出作用范圍系統自動釋放內存,而引用類型是通過垃圾回收機制進行回收。由于C#中所有的數據類型都是由基類System.Object繼承而來的,所以值類型和引用類型的值可以相互轉換,而這轉換過程也就是所謂的裝箱和拆箱。
裝箱轉換
裝箱就是將一個值型變量隱式地轉換為引用類型對象,雖然也可以顯示轉換,但一般都不需要使用到。對值類型進行裝箱會在堆中分配一個對象實例,并將該值復制到新的對象中。
例如:

class TestBoxing
{
static void Main()
{
int i = 123 ;
object o = i; // 隱式裝箱
i = 456 ; // 改變i的內容
System.Console.WriteLine( " 值類型的值為 {0} " , i);
System.Console.WriteLine(
" 引用類型的值為 {0} " , o);
}

}

結果輸出:
值類型的值為 456
引用類型的值為 123

裝箱操作如下圖所示
C#裝箱拆箱
取消裝箱
取消裝箱就是從引用類型到值類型的顯式轉換。取消裝箱操作先檢查對象實例,確保它是給定值類型的一個裝箱值,然后將該值從實例復制到值類型變量中。
例如:

class TestUnboxing
{
static void Main()
{
int i = 123 ;
object o = i; // 隱式裝箱
try
{
int j = ( short ) o; // 試著取消裝箱
System.Console.WriteLine( " 取消裝箱成功. " );
}

catch (System.InvalidCastException e)
{
System.Console.WriteLine(
" {0} 錯誤: 不正確的取消裝箱. " , e.Message);
}

}

}

結果輸出:
指定的轉換無效。錯誤:不正確的取消裝箱。
要將int j = (short) o 改為int j = (int) o 就會顯示取消裝箱成功。

取消裝箱如圖所示:
C#裝箱拆箱

在網上查資料的時候在CSDN上看到個解釋裝箱和拆箱的解釋,如下所示:

// “小范圍”變量int,“大范圍”變量double
int a = 10 ;
double b;
b
= a; // 這叫裝箱,“小”的放入“大”的,呵呵
int a;
double b = 10 ;
a
= ( int )b; // 這叫拆箱,“大”的放入“小”的,亂放或放錯了可不行哈,呵呵


能把強制類型轉換解釋成裝箱拆箱實在覺得很有趣,就做個反面的例子吧。

C#裝箱拆箱


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 张家川| 芜湖县| 龙井市| 兰州市| 盘锦市| 如东县| 峡江县| 富蕴县| 高要市| 抚松县| 麻江县| 平阳县| 新绛县| 金昌市| 江山市| 道孚县| 沧源| 大理市| 长治市| 瑞安市| 县级市| 武夷山市| 应城市| 东宁县| 封开县| 五莲县| 延川县| 新竹县| 武义县| 公主岭市| 万全县| 瑞安市| 隆尧县| 肇东市| 元谋县| 宣恩县| 元氏县| 桂林市| 南靖县| 买车| 元谋县|