Giống như tên gọi, anonymous method (phương thức ẩn danh) là một phương thức không có tên.
Các phương thức ẩn danh trong C# có thể được định nghĩa bằng cách sử dụng từ khóa delegate
và có thể được gán cho một biến của kiểu dữ liệu delegate
.
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);
}
Đây là kết quả khi biên dịch và chạy chương trình:
Inside Anonymous method. Value: 100
Các phương thức ẩn danh có thể truy cập các biến được định nghĩa trong phương thức chưa nó.
public delegate void Print(int value);
static void Main(string[] args)
{
int i = 10;
Print print = delegate(int val)
{
val += i;
Console.WriteLine("Anonymous method: {0}", val);
};
print(100);
}
Đây là kết quả khi biên dịch và chạy chương trình:
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 có tham số là delegate.
Trong ví dụ sau, phương thức PrintHelperMethod()
có tham số đầu tiên là delegate Print:
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);
}
}
Đây là kết quả khi biên dịch và chạy chương trình:
Anonymous method: 110
Các phương thức ẩn danh có thể được sử dụng làm trình xử lý sự kiện:
saveButton.Click += delegate(Object o, EventArgs e)
{
System.Windows.Forms.MessageBox.Show("Save Successfully!");
};
Từ C# 3.0 (.NET 3.5) Microsoft bổ sung thêm Lambda expression (biểu thức Lambda), bây giờ bạn có thể định nghĩa phương thức ẩn danh rất ngắn gọn và dễ hiểu.
Ví dụ đầu tiên sẽ như thế này:
public delegate void Print(int value);
static void Main(string[] args)
{
Print print = (val) =>
{
Console.WriteLine("Inside Anonymous method. Value: {0}", val);
};
print(100);
}
Ví dụ thứ hai trông sẽ thế này:
public delegate void Print(int value);
static void Main(string[] args)
{
int i = 10;
Print print = (val) =>
{
val += i;
Console.WriteLine("Anonymous method: {0}", val);
};
print(100);
}
Ví dụ cuối cùng trông sẽ thế này:
saveButton.Click += (o, e) =>
{
System.Windows.Forms.MessageBox.Show("Save Successfully!");
};
Các phương thức ẩn danh sau khi loại bỏ từ khóa delegate, kiểu dữ liệu của biến, ... trông rất gọn gàng phải không nào.
goto
, break
hoặc continue
.ref
hoặc out
của phương thức chưa nó.Những điểm cần nhớ:
delegate
.delegate
.Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong loạt bài này, tôi sẽ xem xét một số
Ngôn ngữ C# đã bật các bộ tăng áp liên
Trong bài viết này, chúng ta sẽ tìm hiểu lớp tiện ích ZipFile trong C#, cách nén tập tin và thư mục, cùng với giải nén tập tin zip.
Bài viết này sẽ giới thiệu cách đơn giản nhất mà tôi đã tìm thấy để đọc và ghi file Excel bằng C# sử dụng ExcelMapper.