[C#, CSharp, C Sharp 教學 教程 教材 Tutorial] 裝箱(Boxing) & 拆箱(Unboxing)
YehYeh\'s Notepad yehyeh@gmail.com 

[C#, CSharp] Boxing & Unboxing

裝箱(Boxing) & 拆箱(Unboxing)

  • 裝箱(Boxing):將數值型別轉換成參考型別
    • int number = 10;
      object myNumber = (object)number;   //Boxing
      
    在C#中Struct也是數值型別,所以將Struct轉成物件也是裝箱
    • struct Stock
      {
          public int id;
          public int price;
      }
      
      Stock stock = new Stock();
      stock.id = 2330;
      stock.price = 50;  
      
      object stockObj = (object) stock;   //Boxing
      
  • 拆箱(Unboxing):將參考型別轉換成數值型別
    • object myNumber = 10;
      int number = (int) myNumber;    //Unboxing
      
    • object stockObj = (object) stock;
      Stock stock = (Stock) stockObj;    //Unboxing
      
  • 裝箱與拆箱的用途:
    • 在以數值型別進行大量指派或大量參數傳遞時,由於數值型別會在記憶體中複製一份資料,所以會較參考型別耗效能及記憶體空間
    • 在不會造成資料變動或資料變動不會影響程式運行的情況下,將數值型別裝箱成參考型別會較省記憶體及加快程式效能
Δ 回到最上方