Phương thức nặc danh (Anonymous method)
Trong phiên bản trước của C# 2.0, ta chỉ có thể khai báo delegate tham chiếu đến phương thức đặt tên (named method). C# 3.0 giới thiệu phương thức nặc danh (anonymous method) cho phép ta khi khởi tạo đối tượng delegate, không cần tách riêng phương thức mà delegate tham chiếu đến như ví dụ sau:
// Khai báo delegate
public delegate void SimpleDelegate(int x);
// Khởi tạo delegate sử dụng phương thức nặc danh
SimpleDelegate simpleDelegate = delegate(int n)
{
Console.WriteLine("Phương thức được gọi bởi delegate");
Console.WriteLine(n);
};
// Gọi delegate
simpleDelegate(2);
Biểu thức Lambda (Lambda expression)
C# 3.0 đưa ra khái niệm biểu thức Lambda (Lambda expression). Biểu thức Lambda là một hàm nặc danh (anonymous function) chứa biểu thức hay khối lệnh, có thể sử dụng để tạo delegate hay cây biểu thức (expression tree). Biểu thức Lambda sử dụng phép toán Lambda =>. Vế trái phép toán Lambda là các tham đối đầu vào, và vế phải là biểu thức hay khối lệnh:
(DanhSáchThamĐối) => BiểuThức/ KhốiLệnh
Nếu không có tham đối thì cú pháp sẽ như sau:
() => BiểuThức/ KhốiLệnh
Biểu thức Lambda: x => x * x có thể được gán đến một đối tượng delegate như sau:
// Khai báo delegate
public delegate int SimpleDelegate(int x);
// Khởi tạo delegate sử dụng biểu thức Lambda
SimpleDelegate simpleDelegate = x => x * x;
// Gọi delegate
int y = simpleDelegate(2);
Console.WriteLine(y);
Hay biểu thức lambda chứa khối lệnh có thể gán đến đối tượng delegate như sau:
// Khai báo delegate
public delegate void SimpleDelegate(int x, int y);
// Khởi tạo delegate sử dụng biểu thức Lambda
SimpleDelegate simpleDelegate = (x, y) =>
{
Console.WriteLine(x);
Console.WriteLine(y);
};
// Gọi delegate
simpleDelegate(2,3);
» Tin mới nhất:
» Các tin khác: