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