Computer >> Máy Tính >  >> Lập trình >> C#

Biểu thức Lambda trong C # là gì?


Biểu thức Lambda là cách tốt hơn để biểu diễn một phương thức ẩn danh. Cả hai phương thức ẩn danh và biểu thức Lambda đều cho phép bạn xác định nội tuyến triển khai phương thức, tuy nhiên, một phương thức ẩn danh yêu cầu bạn xác định rõ ràng các kiểu tham số và kiểu trả về cho một phương thức.

Biểu thức lambda có một biểu thức làm phần thân của nó:(input - tham số) => biểu thức

Câu lệnh lambda có một khối câu lệnh làm phần thân của nó:(input-parameter) => {}

Bất kỳ biểu thức lambda nào cũng có thể được chuyển đổi thành kiểu đại biểu. Kiểu đại biểu mà biểu thức lambda có thể được chuyển đổi được xác định bởi các kiểu tham số và giá trị trả về của nó. Nếu một biểu thức lambda không trả về giá trị, nó có thể được chuyển đổi thành một trong các kiểu ủy nhiệm Hành động; nếu không, nó có thể được chuyển đổi thành một trong các kiểu đại biểu Func.

static void Main(string[] args){
   Func<int, int> square = x => x * x;
   Console.WriteLine(square(5));
   Console.ReadLine();
}

Một biểu thức lambda với một biểu thức ở bên phải của toán tử => được gọi là một biểu thức lambda. Một biểu thức lambda trả về kết quả của biểu thức và có dạng cơ bản sau

Dòng hành động =() => Console.WriteLine ();

Hàm cube =x => x * x * x;

Hàm testForEquality =(x, y) => x ==y;

Hàm isTooLong =(int x, string s) => s.Length> x;

C # 7.0, ngôn ngữ C # cung cấp hỗ trợ tích hợp cho các bộ giá trị. Bạn có thể cung cấp một tuple làm đối số cho một biểu thức lambda và biểu thức lambda của bạn cũng có thể trả về một tuple.

Các biến được giới thiệu trong biểu thức lambda không hiển thị trong phương thức bao gồm.

Một biểu thức lambda không thể nắm bắt trực tiếp tham số in, ref hoặc out từ phương thức kèm theo.

Câu lệnh trả về trong biểu thức lambda không khiến phương thức bao quanh trả về.

Một biểu thức lambda không được chứa câu lệnh goto, break hoặc continue nếu mục tiêu của câu lệnh jump đó nằm ngoài khối biểu thức lambda. Cũng có lỗi khi có câu lệnh nhảy bên ngoài khối biểu thức lambda nếu mục tiêu nằm bên trong khối.