C# cơ bản .NET Core
(Bài tiếp) Event

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


Đăng ký nhận bài viết mới
(Bài tiếp) Event