[C#, CSharp] Boxing & Unboxing
裝箱(Boxing) & 拆箱(Unboxing)
- 裝箱(Boxing):將數值型別轉換成參考型別
-
int number = 10; object myNumber = (object)number; //Boxing
-
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
-
- 裝箱與拆箱的用途:
- 在以數值型別進行大量指派或大量參數傳遞時,由於數值型別會在記憶體中複製一份資料,所以會較參考型別耗效能及記憶體空間
- 在不會造成資料變動或資料變動不會影響程式運行的情況下,將數值型別裝箱成參考型別會較省記憶體及加快程式效能