Boxing và Unboxing dữ liệu

Một phần của tài liệu Lập trình hướng đối tượng với C docx (Trang 85 - 87)

Boxing và unboxing là những xử lý cho phép kiểu dữ liệu giá trị (như int, long,...) được đối xử như kiểu dữ liệu tham chiếu (các đối tượng). Một giá trị được đưa vào bên trong của đối tượng, được gọi là Boxing. Trường hợp ngược lại, Unboxing sẽ chuyển từ đối tượng ra một giá trị. Xử lý này đã cho phép chúng ta gọi phương thức ToString( ) trên kiểu dữ liệu int trong ví dụ 3.4.

Boxing được thực hiện ngầm định

Boxing là một sự chuyển đổi ngầm định của một kiểu dữ liệu giá trị sang kiểu dữ liệu tham chiếu là đối tượng. Boxing một giá trị bằng cách tạo ra một thể hiển của đối tượng cần dùng và sao chép giá trị trên vào đối tượng mới tạo. Ta có hình vẽ sau minh họa quá trình Boxing một số nguyên.

Boxing số nguyên.

Boxing được thực hiện ngầm định khi chúng ta đặt một kiểu giá trị vào một tham chiếu đang chờ đợi và giá trị sẽ được đưa vào đối tượng một cách tự động ngầm định. Ví dụ, nếu chúng ta gán một kiểu dư liệu cơ bản như kiểu nguyên int vào một biến

kiểu Object (điều này hoàn toàn hợp lệ vì kiểu int được dẫn xuất từ lớp Object) thì giá trị này sẽ được đưa vào biến Object, như minh họa sau:

using System; class Boxing {

public static void Main() {

int i = 123;

Console.WriteLine(“The object value = {0}”, i); }

}

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

Việc đưa một giá trị vào một đối tượng được thực hiện một cách ngầm định. Và sự thực hiện ngược lại, unboxing, tức là đưa từ một đối tượng ra một giá trị phải được thực hiện một cách tường minh. Chúng ta phải thiết lập theo hai bước sau:

Phải chắc chắn rằng đối tượng đã boxing đúng kiểu giá trị đưa ra.

Sao chép giá trị từ thể hiện hay đối tượng vào biến kịểu giá trị.

Unboxing sau khi thực hiện Boxing.

Để thực hiện unboxing thành công, thì đối tượng được unboxing phải được tham chiếu đến một đối tượng, và đối tượng này đã được tạo ra bằng việc boxing một giá

trị cùng với kiểu của giá trị được đưa ra. Boxing và Unboxing được minh họa trong ví dụ sau

Ví dụ : Boxing và Unboxing.

using System;

public class UnboxingTest {

public static void Main() {

int i = 123; // Boxing object o = i;

// Unboxing phải được tường minh int k = (int) o;

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

}

Ví dụ trên tạo một số nguyên i và thực hiện boxing ngầm định khi i được gán cho một đối tượng o. Sau đó giá trị được unboxing một cách tường minh và gán đến một biến nguyên int mới, và cuối cùng giá trị được hiển thị.

Thông thường, chúng ta sẽ bao bọc các hoạt động unboxing trong khối try. Nếu một đối tượng được Unboxing là null hay là tham chiếu đến một đối tượng có kiểu dữ liệu khác, một InvalidCastException sẽ được phát sinh.

Một phần của tài liệu Lập trình hướng đối tượng với C docx (Trang 85 - 87)

Tải bản đầy đủ (PDF)

(142 trang)