Lambda 表达式

Lambda 表达式是一种可用于创建 委托 或 表达式目录树 类型的 匿名函数 。

如下面的示例所示,你可以将此表达式分配给委托类型:

  1. delegate int del(int i);
  2. static void Main(string[] args)
  3. {
  4. del myDelegate = x => x * x;
  5. int j = myDelegate(5); //j = 25
  6. }

如下面的示例所示,你可以将此表达式分配给委托类型:

  1. using System.Linq.Expressions;
  2. namespace ConsoleApplication1
  3. {
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. Expression<del> myET = x => x * x;
  9. }
  10. }
  11. }

isas 运算符的左侧不允许使用 Lambda。

表达式 lambda

表达式位于 => 运算符右侧的 Lambda 表达式称为“表达式 lambda”。 表达式 lambda 广泛用于表达式树的构造。 表达式 lambda 会返回表达式的结果,并采用以下基本形式:

  1. (input-parameters) => expression

仅当 lambda 只有一个输入参数时,括号才是可选的;否则括号是必需的。 括号内的两个或更多输入参数使用逗号加以分隔:

  1. (x, y) => x == y

有时,编译器难以或无法推断输入类型。 如果出现这种情况,你可以按以下示例中所示方式显式指定类型:

  1. (int x, string s) => s.Length > x

使用空括号指定零个输入参数:

  1. () => SomeMethod()

语句 lambda

语句 lambda 与表达式 lambda 表达式类似,只是语句括在大括号中:

  1. (input-parameters) => { statement; }

语句 lambda 的主体可以包含任意数量的语句;但是,实际上通常不会多于两个或三个。

  1. delegate void TestDelegate(string s);
  1. TestDelegate del = n => { string s = n + " World";
  2. Console.WriteLine(s); };

🔚