Một số kỹ thuật đơn giản nhưng hữu dụng trong C#

C# có một loạt các kỹ thuật đình đám như: Lambda expressions, LINQ … và trong đó “Extension method” cũng là một trong những kỹ thuật khá hay được ra đời cùng với bản cập nhật từ C# 3.0. Mới nhìn cái tên chúng ta đã đoán ra được ý nghĩa của nó rồi, nó là những phương thức mở rộng cho tất các các phương thức/đối tượng, từ các đối tượng của Framwork cho đến đối tượng chúng ta phát triển đều có thể viết mở rộng được trong lập trình c#.

Ưu điểm và nhược điểm:

Ưu điểm: 

  • Thêm các phương thức/hành động đến một đối tượng mà bạn không cần kế thừa đối tượng đó.
  • Việc tránh dư thừa và tái sử dụng lại code rất cao.

Nhược điểm

  • Độ ưu tiên thấp hơn các phương thức chính thống.
  • Nếu đối tượng được mở rộng (đối tượng gốc) mà có thay đổi gì về cấu trúc hay làm ảnh hưởng đến quy tắc viết phương thức mở rộng thì rất có thể là phương thức của bạn sẽ không dùng được nữa.

Một vài điểm chú ý:

  • Phương thức mở rộng không làm thay đổi mã nguồn.
  • Phương thức mở rộng phải là phương thức tĩnh, đi kèm với từ khóa “static”.
  • Muốn sử dụng các lớp mở rộng thì phải using namespace của nó.
  • Luôn đì kèm với từ khóa “this”.
  • Nếu sử dụng visual studio IDE bạn rất rễ nhận thấy phương thức mở rộng khi gọi nó: đó là hình mũi tên nét đứt.

Cú pháp:

hoc-c-shap-stanford

Mình sẽ lấy một ví dụ cụ thể nhé.

Khối lệnh phía bên trên là mình đang mở rộng cho đối tượng Datetime 4 phương thức: Ngày đầu và cuối của tháng, ngày đầu và cuối cùng của năm và kết quả sẽ như hình bên dưới.

ket-qua-hien-thi-extension-csharp-stanford

Như hình trên bạn đã thấy 2 phương thức (có hình mũi) tên là FirstDayOfMonth và FirstDayOfYear đã được thêm vào đối tượng Datetime mà vốn ban đầu không hề có từ Microsoft.

Sau đây là ví dụ sử dụng các hàm đã viết theo kỹ thuật mở rộng trong c#:

Vậy là bạn đã hoàn toàn có một lớp mở rộng cho riêng mình, chỉ cần đóng thành DLL là chúng ta có thể sử dụng ở mọi project.

Các bạn có thể tham khảo thư viện LINQ của Microsoft, điển hình như tại lớp Queryable thì toàn bộ phương thức được viết mở rộng cho các đối tượng như: IQueryable, IEnumerable …

Kết luận: Như vậy qua bài chia sẻ này hy vọng các bạn học lập trình c# có thể áp dụng tốt về cách sử dụng phương thức mở rộng, một cấu trúc code tốt + với sử dụng phương thức mở rộng hợp lý thì chắc chắn code của bạn maintain về sau rất là có lợi thế.

Nhận xét