Extension method in C#
TIL
635
C#
24
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
2 0
Tạo file với nội dung như dưới Path: /etc/systemd/system/dockertcp.socket Unit] Description=Docker Socket for the API Socket] ListenStream=237...
LLT viết 1 năm trước
2 0
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 gần 2 năm trước
1 1
Male avatar
1 0
Laravel and Docker Môi trường hiện có MacOS: 10.12 Laravel: 5.4 MySQL: 5.7 Hiện trạng môi trường hiện có Do từ đầu dùng local để dev nên...
LLT viết hơn 1 năm trước
1 0
Bài viết liên quan
White
0 2
fCC: Technical Documentation Page note So I have finished the HTML part of this exercise and I want to come here to lament about the lengthy HTML ...
HungHayHo viết 5 tháng trước
0 2
White
0 0
Mình khá là lười, nên mình sẽ không đưa định nghĩa hay usage của reflection vào đây. Vì dù sao mình cũng sẽ chỉ copy thôi :smile:. Vậy nên chúng ta...
Rice viết 1 tháng trước
0 0
{{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á!