Chào bạn,

Đăng nhập xem việc làm phù hợp

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

Công việc liên quan

Kỹ sư Công nghệ Thông Tin / IT Engineer

Địa điểm:  Bà Rịa - Vũng Tàu

Lương: Cạnh tranh

Kỹ Sư Thiết Kế Cơ Khí (Sản phẩm Quạt & Điều hòa - Bếp từ)

Địa điểm:  Hà Nội

Lương: 12 Tr - 35 Tr VND

C++ Developer

Địa điểm:  Hà Nội

Lương: Cạnh tranh

Chuyên viên Kỹ thuật Ứng dụng

Địa điểm:  Hồ Chí Minh

Lương: Cạnh tranh

Kỹ sư Dữ liệu - Data Engineer - Khối Dữ liệu (2026TD450985)

Địa điểm:  Hà Nội

Lương: Cạnh tranh

Kỹ sư Hồ sơ Hoàn công (Hạ tầng Viễn thông)

Địa điểm:  Hồ Chí Minh, Hà Nội

Lương: Cạnh tranh

Kỹ Sư Điện Tử Senior (Hardware & Firmware)

Địa điểm:  Hà Nội

Lương: 1.000 - 1.500 USD

Kỹ thuật viên

Địa điểm:  Hưng Yên, Hòa Bình

Lương: 7 Tr - 12 Tr VND

Kỹ thuật viên

Địa điểm:  Vĩnh Phúc, Bắc Ninh, Lào Cai

Lương: 7 Tr - 12 Tr VND

Kỹ sư mạng - KCN Tràng Duệ, Hải Phòng 19092

Địa điểm:  Hải Phòng

Lương: 16 Tr - 25 Tr VND

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