程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#的裝箱轉換

C#的裝箱轉換

編輯:關於C語言

裝箱轉換是指將一個值類型隱式地轉換成一個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;

這就證明了,被裝箱的類型的值是作為一個拷貝賦給對象的。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved