Khai báo lambda C#
Biểu thức lambda
còn gọi là biểu thức hàm nặc danh
(Anonymous), một biểu thức khai báo
giống phương thức (hàm) nhưng thiếu tên.
Cú pháp để khai báo biểu thức lambda
là sử dụng toán dử =>
như sau:
(các_tham_số) => biểu_thức;
Thậm chí là cả một cấu trúc lệnh sau toán tử =>
(các_tham_số) => { // các câu lệnh // Sử dụng return nếu có giá trị trả về }
Các biểu thức lambda
đều có thể chuyển đổi thành delegate, do vậy nó có thể gán cho
các delegate phù hợp - (bạn cần biết
cách sử dụng delegate trước).
Sử dụng lambda C#
Ví dụ, đây là một biểu thức lambda
, nó tính tổng của hai số nguyên
(int x, int y) => { return x + y; };
Có thể gán biểu thức này cho biến delegate. Ví dụ:
using System; namespace CS09_Anonymous_lambda { class Program { public delegate int TinhToan (int a, int b); static void Main (string[] args) { // Gán biểu thức lambda cho delegate TinhToan tinhtong = (int x, int y) => { return x + y; }; int kq = tinhtong (5, 1); // kq = 6; Console.WriteLine(kq); } } }
Như phần trình bày về Delegate, có thể gán biểu thức lambda có kết quả trả về cho Func
hoặc biểu thức không có kết quả trả về cho Action
using System; namespace CS09_Anonymous_lambda { class Program { public delegate int TinhToan (int a, int b); static void Main (string[] args) { //Gán lambda cho Func Func<int, int, int> tinhtong1 = (int x, int y) => { return x + y; }; // Gán lambda cho Action Action<int> thongbao = (int vl) => { Console.WriteLine (vl); }; int kq1 = tinhtong1 (5, 3); // kq1 = 8 int kq2 = tinhtong1 (5, 5); // kq2 = 10 thongbao (kq1); // In ra: 8 thongbao (kq2); // In ra: 10 } } }
Định nghĩa phương thức với lambda
Bạn có thể sử dụng toán tử =>
sau khai báo tên phương thức (loại phương thức có
kiểu trả về khác void) của lớp,
rồi đến ngay một biểu thức có kết quả trả về (không dùng {}
), biểu thức
này như là định nghĩ thân của phương thức.
Ví dụ, khai báo phương thức:
int Tong(int x, int y) => x + y;
Nó tương đương với dạng đầy đủ đã biết
int Tong(int x, int y) { return x + y; }
Source code: CS009_Anonymous_lambda (Git), hoặc tải ex009