Tài liệu Lập trình .NET và C# - Lecture 6: Nạp chồng toán tử: 1Lập trình .NET và C#
Lecture 6:
NẠP CHỒNG TOÁN TỬ
TS Đào Nam Anh
UTM, Khoa KH&CN
2Resources
Các giải pháp lập trình C#, Nguyễn Ngọc Bình Phương - Thái Thanh Phong
Allen Jones. C# Programmer's Cookbook. Microsoft Press, 2004
John Connell. Coding Techniques for Microsoft Visual Basic .NET. Microsoft
Press, 2002.
Harvey M. Deitel, Paul J. Deitel, & Tem R. Nieto. Visual Basic .NET How to
Program, Second Edition. Prentice Hall, 2002.
Jose Mojica. C# and VB .NET Conversion Pocket Reference. O'Reilly, 2002.
James Avery. Ten Must-Have Tools Every Developer Should Download Now.
MSDN Magazine, 2004.
Karl Moore. The Ultimate VB.NET and ASP.NET Code Book. Apress, 2003
Matthew MacDonald. Microsoft Visual Basic .NET Programmer's Cookbook.
Microsoft Press, 2003.
Mark Schmidt & Simon Robinson. Microsoft Visual C# .NET 2003 Developer's
Cookbook. Sams Publishing, 2003.
Dương Quang Thiện. Lập trình Visual C# thế nào? Nhà xuất bản Tổng Hợp TP.
Hồ Chí Minh, ...
16 trang |
Chia sẻ: putihuynh11 | Lượt xem: 557 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Lập trình .NET và C# - Lecture 6: Nạp chồng toán tử, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
1Lập trình .NET và C#
Lecture 6:
NẠP CHỒNG TOÁN TỬ
TS Đào Nam Anh
UTM, Khoa KH&CN
2Resources
Các giải pháp lập trình C#, Nguyễn Ngọc Bình Phương - Thái Thanh Phong
Allen Jones. C# Programmer's Cookbook. Microsoft Press, 2004
John Connell. Coding Techniques for Microsoft Visual Basic .NET. Microsoft
Press, 2002.
Harvey M. Deitel, Paul J. Deitel, & Tem R. Nieto. Visual Basic .NET How to
Program, Second Edition. Prentice Hall, 2002.
Jose Mojica. C# and VB .NET Conversion Pocket Reference. O'Reilly, 2002.
James Avery. Ten Must-Have Tools Every Developer Should Download Now.
MSDN Magazine, 2004.
Karl Moore. The Ultimate VB.NET and ASP.NET Code Book. Apress, 2003
Matthew MacDonald. Microsoft Visual Basic .NET Programmer's Cookbook.
Microsoft Press, 2003.
Mark Schmidt & Simon Robinson. Microsoft Visual C# .NET 2003 Developer's
Cookbook. Sams Publishing, 2003.
Dương Quang Thiện. Lập trình Visual C# thế nào? Nhà xuất bản Tổng Hợp TP.
Hồ Chí Minh, 2005.
Nguyễn Ngọc Bình Phương & Lê Trần Nhật Quỳnh. Các giải pháp lập trình
Visual Basic .NET. Nhà xuất bản Giao thông Vận tải, 2006
www.msdn.microsoft.com, www.codeproject.com, www.msd2d.com,
www.developersdex.com, www.windowsforms.net, www.gotdotnet.com,
www.codeguru.com, www.developerfusion.com
3 Sử dụng từ khóa operator
Hỗ trợ ngôn ngữ .NET khác
Sử dụng toán tử
Toán tử so sánh bằng
Toán tử chuyển đổi
4NẠP CHỒNG TOÁN TỬ
Thực hiện các toán tử bằng cách gọi một phương thức,
tương tự như câu lệnh sau:
Fraction theSum = firstFraction.Add(secondFraction);
Mặc dù cách thực hiện này không sai nhưng về trực quan
thì rất tệ không được tự nhiên như kiểu dữ lịêu được xây
dựng sẵn. Cách thực hiện sau sẽ tốt hơn rất nhiều nếu ta
thiết kế đựơc:
Fraction theSum = firstFraction + secondFraction;
Cách thực hiện này xem trực quan hơn và giống với cách
thực hiện của các lớp được xây dựng sẵn, giống như khi
thực hiện phép cộng giữa hai số nguyên int.
5NẠP CHỒNG TOÁN TỬ
Trong ngôn ngữ C#, các toán tử là các phương
thức tĩnh, giá trị trả về của nó thể hiện kết
quả của một toán tử và những tham số là các
toán hạng.
Khi chúng ta tạo một toán tử cho một lớp là
chúng ta đa thực việc nạp chồng
(overloaded) những toán tử đó, cũng giống
như là chúng ta có thể nạp chồng bất cứ
phương thức thành viên nào.
6Sử dụng từ khóa operator
Do đó, để nạp chồng toán tử cộng (+) chúng ta
có thể viết như sau:
public static Fraction operator + (Fraction
lhs, Fraction rhs)
Trong toán tử trên ta có sự qui ước đặt tên của
tham số là lhs và rhs. Tham số tên lhs thay
thế cho “left hand side” tức là toán hạng bên
trái, tương tự tham số tên rhs thay thế cho
“right hand side” tức là toán hạng bên phải.
7Sử dụng từ khóa operator
public static Fraction operator + (Fraction
lhs, Fraction rhs)
Fraction theSum = firstFraction +
secondFraction;
8Hỗ trợ ngôn ngữ .NET khác
C# cung cấp khả năng cho phép nạp chồng
toán tử cho các lớp
Những ngôn ngữ .NET khác như VB.NET thì
không hỗ trợ việc nạp chồng toán tử
9Hỗ trợ ngôn ngữ .NET khác
Nạp chồng toán tử có thể làm cho mã nguồn
của chúng ta trực quan và những hành động
của lớp mà chúng ta xây dựng giống như các
lớp được xây dựng sẵn.
Nếu chúng ta nạp chồng toán tử (+) thì nên
cung cấp một phương thức Add() cũng làm
cùng chức năng là cộng hai đối tượng.
10
Sử dụng toán tử
sử dụng nạp chồng toán tử một cách hạn chế,
và chỉ sử dụng khi nào nghĩa nó rõ ràng và
phù hợp
11
Sử dụng toán tử
+ Add Toán tử cộng
- Subtract Toán tử trừ
* Multiply Toán tử nhân
/ Divide Toán tử chia
% Mod Toán tử chia lấy dư
^ Xor Toán tử or loại trừ
& BitwiseAnd Toán tử and nhị phân
| BitwiseOr Toán tử or nhị phân
&& And Toán tử and logic
|| Or Toán tử or logic
= Assign Toán tử gán
<< LeftShift Toán tử dịch trái
>> RightShift Toán tử dịch phải
12
Toán tử so sánh bằng
Nếu chúng ta nạp chồng toán tử bằng (==), thì
chúng ta cũng nên phủ quyết phương thức
ảo Equals() được cung cấp bởi lớp object và
chuyển lại cho toán tử bằng thực hiện.
13
Toán tử so sánh bằng
pubic override bool Equals (object o)
{
if ( !(o is Fraction) )
{
return false;
}
return this == (Fraction) o;
}
14
Toán tử chuyển đổi
C# cho phép chuyển đổi từ kiểu int sang kiểu long một
cách ngầm định, và cũng cho phép chúng ta chuyển
từ kiểu long sang kiểu int một cách tường minh.
Việc chuyển từ kiểu int sang kiểu long được thực hiện
ngầm định bởi vì hiển nhiên bất kỳ giá trị nào của int
cũng được thích hợp với kích thước của kiểu long.
Tuy nhiên, chuyển từ kiểu long sang kiểu int phải
được thực hiện một cách tường minh (sử dụng ép
kiểu) bởi vì ta có thể mất thông tin khi giá trị của
biến kiểu long vượt quá kích thước của int lưu trong
bộ nhớ:
15
Toán tử chuyển đổi
int myInt = 5;
long myLong;
myLong = myInt; // ngầm định
myInt = (int) myLong; // tường minh
16
Question
Các file đính kèm theo tài liệu này:
- csharp006_1375_1987443.pdf