Đó là một dạng ký hiệu phương thức ngắn gọn hơn nhiều. Những điều sau gần tương đương:
int MyFunc(int pParam) {
return pParam;
}
Func<int, int> MyFunc = delegate (int pParam) { return pParam; };
Func<int, int> MyFunc = x => x;
int MyFunc(int pParam) =>
pParam;
Hãy nghĩ về một biểu thức lambda như nói, "đã cho một cái gì đó, trả lại một cái gì đó". Trong ví dụ trên, biểu thức lambda x => xcho biết "đã cho x, trả về x", mặc dù biểu thức lambda không nhất thiết phải trả về điều gì đó, trong trường hợp đó bạn có thể đọc chúng là "đã cho x, hãy làm điều gì đó với x".
Cũng lưu ý rằng có ba thứ được gọi là "đại biểu" thoạt đầu có thể rất khó hiểu.
Một phương thức ẩn danh sử dụng delegatetừ khóa, nhưng xác định một phương thức không có tên:
Func<int, int> = delegate (int x) { return x; };
Việc gán một phương thức (ẩn danh, rõ ràng hoặc lambda) cho một tham chiếu khiến một Delegateđối tượng trình bao bọc ẩn được tạo ra, đối tượng cho phép phương thức được tham chiếu. (Về cơ bản là một loại "con trỏ chức năng được quản lý".)
Và sau đó, bạn cũng có thể khai báo chữ ký phương thức được đặt tên bằng cách sử dụng delegatetừ khóa:
public delegate int TestFunc(int x, int y);
TestFunc myFunc = delegate (int x, int y) { return x + y; };
Điều này khai báo một chữ ký được đặt tên TestFuncnhận hai ints và trả về một int, sau đó khai báo một tham chiếu ủy quyền của loại đó sau đó được gán một phương thức ẩn danh với chữ ký phù hợp.