Thứ Năm, 8 tháng 4, 2010

// // Leave a Comment

Boxing và Unboxing C#

1. Boxing

Boxing  là quá trình chuyển dữ liệu từ kiểu tham trị sang kiểu tham chiếu.Quá trình boxing một biến kiểu tham trị sẽ khởi tạo một đối tượng trong vùng nhớ Heap và copy gía trị của biến tham trị vào đối tượng mới này ! Và quá trình boxing được thực hiện ngầm định:

Đây là chương trình minh họa quá trình trên.
Đây là chương trình minh họa quá trình trên.
   using System;

   class Boxing

   {

   public static void Main()

   {

   int i = 123;

   object o = i;   // boxing

   Console.WriteLine("The object value = {0}", o);

   Console.ReadLine();

   }

   }
Quá trình trên gọi là quá trình boxing ! biến i được khởi tạo là giá trị kiểu tham trị (int) và được lưu trên bộ nhớ stack ! Khi boxing biến i sẽ tạo ra một đối tượng o được lưu trong bộ nhớ heap, và gán giá trị của o bằng giá trị của i.  

2.Unboxing

Unboxing là quá trình ngược lại với boxing, tức là đưa từ kiểu tham chiếu ra kiểu tham trị. Quá trình này sẽ được thực hiện một cách tường minh. Gồm có 2 bước : Bước 1 : Kiểm tra chắc chắn rằng đối tượng đã được boxing đúng kiểu giá trị đưa ra Bước 2 : Copy giá trị sang biến dữ liệu kiểu tham trị





Unboxing sau khi thực hiện Boxing.

Đây là chương trình minh họa cả quá trình boxing và unboxing:


 using System;

 public class Unboxing

 {

 public static void Main()

 {

 int i = 123;

 // Boxing

 object o = i;

 // Unboxing phải được thực hiện tường minh

 int k = (int) o;

 Console.WriteLine("k: {0}", k);

 }

 }



Quá trình trên gọi là quá trình unboxing ! biến k được khởi tạo là giá trị kiểu tham trị (int) và được gán giá trị bang giá trị chứa trong biến tham chiếu o.

0 comments: