C# จัดเตรียมสองวิธีในการเชื่อมโยงประเภทค่ากับประเภทอ้างอิงและในทางกลับกัน วิธีการเชื่อมโยงสองวิธีนี้มีชื่อว่า boxing และ unboxing โดยที่ Boxing ใช้สำหรับการแปลงประเภทค่าเป็นประเภทอ็อบเจกต์ ในขณะที่ Unboxing หมายถึงการแปลงประเภทอ็อบเจ็กต์เป็นประเภทค่า
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญระหว่าง Boxing และ Unboxing
ซีเนียร์ เลขที่ | คีย์ | ชกมวย | กำลังแกะกล่อง |
---|---|---|---|
1 | การนำไปใช้ | การชกมวยประเภทอ็อบเจ็กต์เรียกว่าประเภทค่า | การแกะกล่องโดยทั่วไปจะประมวลผลค่าที่ดึงมาจากวัตถุชนิดบรรจุกล่อง |
2 | ที่เก็บข้อมูล | ในกรณีของการชกมวย ค่าที่เก็บไว้ในสแต็กจะถูกคัดลอกไปยังอ็อบเจ็กต์ที่เก็บไว้ในหน่วยความจำฮีป | ในทางกลับกัน ในกรณีที่แกะค่าของอ็อบเจ็กต์ที่เก็บไว้ในหน่วยความจำฮีพจะถูกคัดลอกไปยังประเภทค่าที่จัดเก็บไว้ในสแต็ก |
3 | ประเภทของการแปลง | การชกมวยโดยทั่วไปเรียกว่าการแปลงโดยนัย | การแกะกล่องหมายถึงการแปลงที่ชัดเจน |
ตัวอย่างการชกมวยกับการแกะกล่อง
JavaTester.java
public class JavaTester { public static void main(String[] args){ int val = 119; // Boxing Object o = val; // Change the value of val val = 120; //unboxing int x = (int)o; System.out.println("Value of x is {0}"+ x); System.out.println("Value type of val is {0}"+val); System.out.println("Object type of val is {0}"+o); } }
ผลลัพธ์
Value of x is {0}119 Value type of val is {0}120 Object type of val is {0}119