本文共 1348 字,大约阅读时间需要 4 分钟。
Lambda表达式是一个强大的工具,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型。在C#中,Lambda表达式通过Lambda运算符(=>)定义,左边是输入参数,右边是表达式或语句块。例如,Lambda表达式x => x * x可以读作“x goes to x times x”。
Lambda表达式可以分配给委托类型。例如:
delegate int del(int i);del myDelegate = x => x * x;int j = myDelegate(5); // j = 25
在这种情况下,Lambda表达式的输入参数和返回值类型与委托的定义一致。编译器会根据上下文推断输入参数和返回值的类型。
在某些情况下,Lambda表达式可以用于创建表达式目录树。例如:
using System.Linq.Expressions;Expression> expr = x => x * x;
这种方式可以在基于方法的LINQ查询中使用,作为标准查询运算符(如Where)的参数。例如:
var numbers = new[] { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };int oddCount = numbers.Count(n => n % 2 == 1); // 返回25 Lambda表达式通常不需要显式指定类型,因为编译器可以根据上下文推断输入参数和返回值的类型。例如:
FuncmyFunc = n => n == 5;bool result = myFunc(5); // 返回false
如果需要显式指定类型,可以在输入参数括号中添加类型信息:
FuncmyFunc = (int n) => n == 5;
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };int oddNumbers = numbers.Count(n => n % 2 == 1); // 返回25var firstNumbersLessThan6 = numbers.TakeWhile(n => n < 6);var firstSmallNumbers = numbers.TakeWhile((n, index) => n >= index); 通过合理使用Lambda表达式,可以简化代码,使其更易于阅读和维护。
转载地址:http://ltvkz.baihongyu.com/