.1 Toán tử

Một phần của tài liệu BÀI GIẢNG TÓM TẮT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ppsx (Trang 73 - 75)

Tìm hiểu toán tử

Chúng ta dùng toán tửđể kết hợp các toán hạng với nhau trong một biểu thức. Mỗi toán tử có riêng ngữ nghĩa dựa trên kiểu mà chúng làm việc. Ví dụ, toán tử + nghĩa là cộng đối với kiểu dữ liệu số nhưng lại là nối chuỗi đối với kiểu dữ liệu string.

Mỗi toán tử có một độưu tiên khác nhau. Ví dụ toán tử * có độưu tiên cao hơn toán tử

+.

Mỗi toán tử có một kết hợp với nó từ trái qua phải hay từ phải qua trái. Ví dụ, toán tử

= là kết hợp phải (từ phải qua trái) vì a = b= c cùng a = (b=c).

Toán tử một ngôi là toán tử chỉ có một toán hạng. Ví dụ, toán tử tăng (++) là một toán tử một ngôi.

Toán tử nhị phân là toán tử có hai toán hạng. Ví dụ toán tử * là toán tử nhị phân.

Ràng buộc toán tử

C# cho phép bạn nạp chồng hầu hết các toán tử hiện tại theo kiểu riêng của bạn. Khi thực hiện điều này toán tử của bạn thực thi theo các luật sau:

ƒ Bạn không thể thay đổi độưu tiên và sự kết hợp của một toán tử. Độưu tiên và sự

kết hợp dựa trên kí hiệu toán tử (ví dụ +), không dựa trên kiểu (ví dụ int) mà kí hiệu toán tửđang được sử dụng. Vì vậy, biểu thức a + b * c thì giống a + (b*c) không liên quan đến kiểu a, b, c.

ƒ Bạn không thể thay đổi số số hạng của toán tử. Ví dụ, * là toán tử nhị phân. Nếu bạn khai báo một toán tử * cho kiểu của bạn, nó phải là toán tử nhị phân.

ƒ Bạn không thể tạo kí hiệu toán tử mới. Ví dụ, bạn không thể tạo một kí hiệu toán tử

mới như là ** để tính mũ số của một số với một số khác. Bạn phải tạo một phương thức để thực hiện điều đó.

ƒ Bạn không thể thay đổi ý nghĩa của các toán tử khi bạn dùng nó cho các kiểu dựng sẵn. Ví dụ, biểu thức 1 + 2 có một ý nghĩa định nghĩa trước và bạn không được phép ghi đè nghĩa này. Nếu bạn làm điều này, mọi thứ trở nên phức tạp.

ƒ Có một số kí hiệu toán tử mà bạn không thể quá tải. Ví dụ, bạn không thể quá tải toán tử “. ”.

73

Kiểu đóng hộp(Boxing) và mở hộp (unboxing)

Đóng hộp và mở hộp là quá trình xử lý cho phép các kiểu giá trịđược xử lý như là kiểu tham chiếu. Đóng hộp chính là chuyển giá trị vào trong một đối tượng và mở hộp trả về kiểu giá trị của đối tượng đó. Đó là cách cho phép chúng ta gọi phương thức ToString() trên số nguyên trong các ví dụ trên.

Đóng hộp là dạng không tường minh

Đóng hộp chuyển một kiểu giá trị đến một kiểu Object không tường minh. Đóng hộp một giá trị sẽ thực hiện cấp phát một thể hiện của Object và chép giá trị vào trong thể

hiện của đối tượng mới như trong hình vẽ sau:

Ví dụ minh họa: using System; class DongHop {

public static void Main( ) {

int i = 123;

object o =i;

Console.WriteLine("Gia tri cua doi tuong la = {0}", o); }

}

Mở hộp tường minh

Để lấy giá trị từđối tượng, mở hộp trả về một kiểu giá trị, chúng ta phải thực hiện mở (adsbygoogle = window.adsbygoogle || []).push({});

hộp rõ ràng. Chúng ta nên thực hiện hai bước sau:

ƒ Đảm bảo thể hiện của đối tượng là một giá trị có cùng kiểu với kiểu được đưa vào khi đóng hộp.

ƒ Chép giá trị từ thể hiện của đối tượng đến biến kiểu giá trị. Minh họa như trong hình vẽ sau:

74

Để thực hiện được quá trình mở hộp, đối tượng bị mở hộp phải là một tham chiếu đến

đối tượng mà chúng được tạo bởi đóng. Minh họa mở và đóng hộp như sau: using System;

public class UnboxingTest {

public static void Main( ) {

int i = 123;

//đóng hộp

object o = i;

// mở hộp phải được khai báo tường minh

int j = (int) o;

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

} }

Một phần của tài liệu BÀI GIẢNG TÓM TẮT LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG ppsx (Trang 73 - 75)