C#學習日記18----裝箱(boxing)轉換與拆箱(unboxing)轉換

來源:互聯網
上載者:User
經過前面的學習,我們基本能夠實現實值型別與實值型別之間的轉換,參考型別與參考型別之間的轉換,但是實值型別與參考型別(object)之間的轉換又該怎麼實現呢??

在C# 中,我們採用裝箱來實現將實值型別轉換成參考型別,用拆箱實現將參考型別轉換成實值型別;換句話說,它可以實現從任何實值型別、參考型別到Object類型之間的轉換,有了裝箱與拆箱對任何類型來說我們都可以看作object 類型 (有關object 類型的內容可以點擊 參考型別----object類 進入)

裝箱轉換:

在這裡我要補充一下,在.NET中,資料類型劃分為實值型別和引用(不等同於C++的指標)類型,與此對應,記憶體配置被分成了兩種方式,一為棧,二為堆,(是託管堆。)實值型別只會在棧中分配。參考型別分配記憶體與託管堆。

寫個例子:

  int i = 123;           object o = i;    //實現裝箱操作,其實也是隱式轉換。

裝箱轉換的原理圖如下:

裝箱轉換實質上是一種複製類型轉換,也就是說當我們完成裝箱後,再改變 i 的值 o 的值不會改變

拆箱轉換:

和裝箱轉換正好相反,拆箱轉換是指將一個物件類型顯示的轉換為一個實值型別,拆箱的過程分為兩步,首先,檢查這個對象執行個體,看他是否為給定的實值型別的裝箱值,然後,把這個執行個體的值拷貝給實值型別的變數;

寫個例子(基於上面的裝箱代碼):

  int n_int = (int)o;    //強制將object類型轉換為int 類型

可以看出正好是裝箱的逆過程,將對象強制轉換為原來的類型,必須要注意的是,拆箱的值必須和它要轉換的目標的變數有相同的類型。

在這裡我有必要強調的是裝箱和拆箱是 從實值型別或參考型別到object類型的轉換,從object類型到實值型別或參考型別的轉換.

以上就是C#學習日記18----裝箱(boxing)轉換與拆箱(unboxing)轉換的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.