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

C#裝箱拆箱

系統 2898 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 贵溪市| 武山县| 孙吴县| 邵东县| 富阳市| 阳新县| 黄石市| 平顺县| 大同县| 泰和县| 科技| 高邑县| 南溪县| 凤城市| 达日县| 田林县| 聂荣县| 绥棱县| 小金县| 松阳县| 姚安县| 孝义市| 汉沽区| 枣强县| 徐汇区| 全南县| 盈江县| 湘阴县| 呼伦贝尔市| 吴江市| 平潭县| 上高县| 大田县| 元氏县| 泽普县| 武定县| 濮阳县| 丹阳市| 桃江县| 元氏县| 福鼎市|