Hello,

Sign in to find your next job.

Blog IT

Một số kỹ thuật đơn giản nhưng lại rất hữu dụng trong c#

Một số kỹ thuật đơn giản nhưng lại rất hữu dụng trong c#

Extension method (Phương thức mở rộng).

C# 3.0 ra đời kèm theo một loạt các kỹ thuật đinh đám như: Lambda expressions, LINQ … và trong đó “Extension method” là một trong những kỹ thuật khá hay được ra đời cùng với bản cập nhật này. 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 Framework cho đến đối tượng chúng ta phát triển đều có thể viết mở rộng được.

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

  1. Ư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.
  2. 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:

67b45fa6d10cc5dd8ff01ff69949d229dfbf4285

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

9d76a62e391c053e4e1fb67dc7570e5172d110d1

_ 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.

982ee41d530a3a4b7d6fad1210b03e56b80cf37d

_ 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.

_ 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 khao 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: Qua bài chia sẻ này hy vọng các bạn 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ế.

Techtalk via Viblo

Nguồn: Techtalk.vn

Similar jobs

Kỹ Sư Công Nghệ Thông Tin

Location:  Hà Nội, Hưng Yên

Salary 20 Mil - 40 Mil VND

kỹ sư phần mềm

Location:  Hà Nội

Salary 15 Mil - 30 Mil VND

Kỹ Thuật Viên Bảo Trì Điện

Location:  Hưng Yên

Salary Competitive

KỸ SƯ HẠ TẦNG IT

Location:  Hồ Chí Minh

Salary Competitive

Kỹ Sư Giao Thức Truyền Thông

Location:  Hồ Chí Minh

Salary Competitive

Kỹ Thuật Viên/ Kỹ Thuật Triển Khai

Location:  Hà Nội, Hồ Chí Minh, An Giang

Salary 15 Mil - 25 Mil VND

Chuyên viên Bán hàng kỹ thuật

Location:  Hà Nội

Salary Competitive

Phó Phòng Kỹ Thuật

Location:  Hà Nội

Salary 17 Mil - 20 Mil VND

KỸ SƯ IT MES - Mes engineer

Location:  Bà Rịa - Vũng Tàu

Salary Competitive

CareerViet.vn - Mạng Việc làm & Tuyển dụng lớn nhất thế giới

Công Ty Cổ Phần CareerViet Trụ̣ sở: 139 Pasteur, Phường Võ Thị Sáu, Quận 3, TP.HCM

MST: 0303284985Ngày cấp: 25/04/2013 Nơi cấp: Sở Kế Hoạch Và Đầu Tư Thành Phố Hồ Chí MinhĐiện thoại: (84.28) 3822-6060 Email: contact@careerviet.vn