Giáo trình Lập trình .NET và C# - Chương 6: Nạp chồng toán tử - Đào Nam Anh

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 Po

pdf16 trang | Chia sẻ: huongnhu95 | Lượt xem: 373 | Lượt tải: 0download
Tóm tắt tài liệu Giáo trình Lập trình .NET và C# - Chương 6: Nạp chồng toán tử - Đào Nam Anh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cket 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:

  • pdfgiao_trinh_lap_trinh_net_va_c_chuong_6_nap_chong_toan_tu_dao.pdf
Tài liệu liên quan