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