Nạp chồng toán tử (Operator Overloading) trong C#

Các bài viết trước Taimienphi.vn đã giới thiệu cho bạn về lớp và đối tượng trong C# là gì, bài viết dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn về nạp chồng toán tử (Operator Overloading) trong C#.

Nạp chồng toán tử (Operator Overloading) trong C#
 

Mục Lục bài viết:
1. Nạp chồng toán tử (Operator Overloading) trong C#.
2. Cú pháp nạp chồng toán tử trong C#.
3. Nạp chồng toán tử một ngôi.
4. Nạp chồng toán tử nhị phân.
5. Lợi ích của nạp chồng toán tử trong C#.

1. Nạp chồng toán tử (Operator Overloading) trong C#

Như đã đề cập ở trên, nạp chồng toán tử cho phép sử dụng cùng một toán tử để thực hiện các hoạt động khác nhau, bổ sung cho các toán tử C# khi nó được áp dụng cho các kiểu dữ liệu do người dùng định nghĩa. Đồng thời cho phép triển khai các toán tử do người dùng định nghĩa cho các hoạt động khác nhau, trong đó một hoặc cả hai toán hạng là lớp do người dùng định nghĩa.

Chỉ tập hợp các toán tử C# được định nghĩa trước mới có thể được nạp chồng. Việc thực hiện các thao tác các kiểu dữ liệu do người dùng định nghĩa không đơn giản như các thao tác trên kiểu dữ liệu được tích hợp.

Để sử dụng các toán tử với các kiểu dữ liệu do người dùng định nghĩa, các toán tử này phải được nạp chồng theo yêu cầu của lập trình viên. Một toán tử có thể được nạp chồng bằng cách định nghĩa một hàm cho nó. Hàm của toán tử được khai báo bằng cách sử dụng từ khóa operator.

2. Cú pháp nạp chồng toán tử trong C#

Dưới đây là cú pháp nạp chồng toán tử trong C#:

Lưu ý: Về cơ bản toán tử nạp chồng là cơ chế cung cấp toán tử C# lý tưởng, một kiểu dữ liệu do người dùng định nghĩa, chẳng hạn như các cấu trúc hoặc các lớp.

Dưới đây là bảng danh sách mô tả các toán tử nạp chồng khác nhau có sẵn trong C#:

Toán tử Mô tả

+, -, !, -, ++, - - Toán tử một ngôi lấy một toán hạng và có thể bị nạp chồng.

+, -, *, /, % Toán tử nhị phân lấy 2 toán hạng và có thể bị nạp chồng.

==, !=, = Toán tử so sánh có thể bị nạp chồng.

&&, || Toán tử logic không bị nạp chồng trực tiếp.

+=, -+, *=, /=, %=, = Toán tử gán không bị nạp chồng.

3. Nạp chồng toán tử một ngôi

Kiểu trả về có thể là kiểu dữ liệu bất kỳ, ngoại trừ khoảng trống cho các toán tử một ngôi như !, -, + và dấu chấm (.), nhưng kiểu trả về phải là kiểu của toán tử - và ++, và kiểu bool cho toán tử True cũng như False. Tuy nhiên cần lưu ý các toán tử True và False có thể bị nạp chồng dưới dạng các cặp. Lỗi trình biên dịch phát sinh nếu một lớp khai báo một trong các toán tử này mà không khai báo các toán tử khác.

Dưới đây là cú pháp nạp chồng toán tử một ngôi:

Toán tử (đối tượng);

Trong đó, toán tử là biểu tượng biểu thị toán tử một ngôi.

Toán tử a;

Ví dụ về nạp chồng toán tử một ngôi:

Kết quả đầu ra có dạng:

4. Nạp chồng toán tử nhị phân

Toán tử nhị phân (Binary Operator) sẽ hoạt động với 2 toán hạng. Một số ví dụ về toán tử nhị phân bao gồm toán tử số học (+, -, *, /, %), toán tử gán số học (+=, -+, *=, /+, %=) và toán tử quan hệ, ... . Nạp chồng toán tử nhị phân tương tự nạp chồng toán tử một ngôi, ngoại trừ toán tử nhị phân yêu cầu thêm tham số bổ sung.

Cú pháp nạp chồng toán tử nhị phân:

Toán tử toán tử (đối tượng 1, đối tượng 2);

Trong đó toán tử2 là biểu tượng, biểu thị cho toán tử nhị phân.

toán tử + (a, b);

Ví dụ về nạp chồng toán tử nhị phân:

Kết quả đầu ra có dạng:

5. Lợi ích của nạp chồng toán tử trong C#

- Nạp chồng toán tử bổ sung cho các toán tử C# khi các toán tử này được áp dụng cho kiểu dữ liệu do người dùng định nghĩa.
- Các toán tử có thể được coi là các hàm bên trong trình biên dịch.

Trên đây là các thông tin cũng như ví dụ về nạp chồng toán tử (Operator Overloading) trong C# mà Taimienphi.vn vừa giới thiệu cho bạn. Hy vọng bài viết trên đây đã cung cấp cho bạn các thông tin hữu ích về C#. Ngoài ra, bạn đọc có thể tham khảo thêm một số bài viết khác đã có trên Taimienphi.vn để tìm hiểu rõ hơn về Enum trong C# cũng như chuỗi trong C# là gì nhé.

Khái niệm nạp chồng một hàm cũng có thể được áp dụng cho các toán tử. Nạp chồng toán tử (Operator Overloading) cho phép sử dụng cùng một toán tử để thực hiện hoạt động khác nhau. Trong bài học C# dưới đây, Taimienphi.vn sẽ giới thiệu chi tiết cho bạn về nạp chồng toán tử (Operator Overloading) trong C#.
Các toán tử (Operator) trong MATLAB
Toán tử trong C#
Vòng lặp trong C
Toán tử trong C
Vòng lặp (loop) trong C#
Nullable trong C# là gì?

ĐỌC NHIỀU