Extension method in C#
TIL
487
C#
16
Male avatar

LLT viết ngày 22/11/2016

Extension method in C#

  1. Là gì?

    • Mở rộng của 1 class có sẵn nào đó
  2. Dùng như nào

    • Là thành phần của 1 static method
    • Method có ít nhất 1 tham số
    • Tham số đầu tiên chính là class sẽ được extend
    • Từ khoá this phải thêm vào tham số đầu tiên của extension method.
  3. Cách dùng

 public static  class ExtentionMethod
    { 
        public static bool IsKipalogAwesome(this string s)
        {
            return "Kipalog is awesome".Equals(s);
        }
      public static int MyPow(this int n)
        {
            return n * n;
        }
    }

class Program
    {        
        static void Main(string[] args)
        {           
            string s = "Kipalog is awesome";
            Console.WriteLine(s.IsKipalogAwesome());  //True
            Console.WriteLine(5.MyPow());   // 25
            //Console.WriteLine(ExtentionMethod.MyPow(5)); cách gọi khác của MyPow
        }
    }

Trong ví dụ trên, rõ ràng IsKipalogAwesomeMyPow là 2 method của class ExtentionMethod tuy nhiên lại được gọi qua instance của class string và int. Đây là ý nghĩa chính của extension method. Tuy nhiên, cũng bởi như vậy nên việc sử dụng extension method cũng sẽ gây ra 1 số khó khăn cho việc bảo trì. Dưới đây sẽ là một vài chú ý về cách thức sử dụng kỹ thuật này:

a. Chỉ nên dùng mở rộng cho các lib class
b. Nên đặt tên method rõ ràng và tránh đặt cùng tên các method có sẵn trong lib
c. Nên viết comment rõ ràng

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

Male avatar

LLT

4 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
Male avatar
1 1
Vấn đề về bộ nhớ của Com object trong C 1. Vấn đề gặp phải Mình cần viết một tool xử lý vài thứ nằm trong file excel Quái nào C có bộ GC ngon ...
LLT viết 1 năm trước
1 1
Bài viết liên quan
White
18 1
Toán tử XOR có tính chất: + A XOR A = 0 + 0 XOR A = A Với tính chất này, có thể cài đặt bài toán sau với độ phức tạp O(N) về runtime, và với O(1)...
kiennt viết hơn 1 năm trước
18 1
White
1 1
Chào mọi người, hôm nay mình viết một bài TIL nhỏ về cách lấy độ phân giải của màn hình hiện tại đang sử dụng. xdpyinfo | grep dimensions Kết quả...
namtx viết 7 tháng trước
1 1
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


Male avatar
{{userFollowed ? 'Following' : 'Follow'}}
4 bài viết.
0 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!