C# Advanced (Series #8)

1 min read

  • C# – Anonymous Types
  • C# – Dynamic Types
  • C# – Ternary Operator ?:
  • C# Generics & Generic Constraints
  • C# – Delegates
  • C# – Func Delegate
  • C# – Action Delegate
  • C# – Anonymous Method
  • C# – Events
  • C# – Extension Method
  • C# – HttpClient

C# – Anonymous Method

Như tên cho thấy, phương thức ẩn danh là phương thức không có tên. Các phương thức ẩn danh trong C# có thể được xác định bằng từ khóa delegate và có thể được gán cho một biến kiểu delegate.

// Example: Anonymous Method
public delegate void Print(int value);
static void Main(string[] args)
{
    Print print = delegate(int val) { 
        Console.WriteLine("Inside Anonymous method. Value: {0}", val); 
    };
    print(100);
}
// OUTPUT: Inside Anonymous method. Value: 100

Các phương thức ẩn danh có thể truy cập các biến được xác định trong hàm bên ngoài.

// Example: Anonymous Method
public delegate void Print(int value);
static void Main(string[] args)
{
    int i = 10;
    
    Print prnt = delegate(int val) {
        val += i;
        Console.WriteLine("Anonymous method: {0}", val); 
    };
    prnt(100);
}
// OUTPUT: Anonymous method: 110

Các phương thức ẩn danh cũng có thể được truyền cho một phương thức chấp nhận delegate as a parameter.

Trong ví dụ sau, PrintHelperMethod() lấy các tham số đầu tiên của Print delegate:

// Example: Anonymous Method as Parameter
public delegate void Print(int value);
class Program
{
    public static void PrintHelperMethod(Print printDel,int val)
    { 
        val += 10;
        printDel(val);
    }
    static void Main(string[] args)
    {
        PrintHelperMethod(delegate(int val) { Console.WriteLine("Anonymous method: {0}", val); }, 100);
    }
}
// OUTPUT: Anonymous method: 110

Anonymous methods có thể được sử dụng như event handlers:

// Example: Anonymous Method as Event Handler
saveButton.Click += delegate(Object o, EventArgs e)
{ 
    System.Windows.Forms.MessageBox.Show("Save Successfully!"); 
};

C# 3.0 đã giới thiệu lambda expression cái này hoạt động như một anonymous method.

Hạn chế Anonymous Method

  • Nó không thể chứa câu lệnh nhảy như goto, break hoặc continue.
  • Nó không thể truy cập tham số ref hoặc out của phương thức bên ngoài.
  • Nó không thể có hoặc truy cập mã không an toàn.
  • Nó không thể sử dụng ở phía bên trái của toán tử.

Những điểm cần nhớ :

  • Phương thức ẩn danh có thể được định nghĩa bằng cách sử dụng từ khóa delegate
  • Phương thức ẩn danh phải được gán cho một delegate.
  • Phương thức ẩn danh có thể truy cập các biến hoặc phương thức bên ngoài.
  • Phương thức ẩn danh có thể được sử dụng như là tham số của một phương thức.
  • Phương thức ẩn danh có thể được sử dụng như một trình xử lý sự kiện.
  • Có thể sử dụng Lambda expression để định nghĩa phương thức ẩn danh.
Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *