这个奇怪的链接的含义是什么?' lambda(x =>()=> y)?

时间:2014-07-23 20:59:07

标签: c# lambda callback

我刚刚开始使用现有代码库开发项目。在查看项目时,我发现了一个奇怪的lambda,我正在努力理解。

以下是代码:

SomeFunction(x => () => new Y());

我不明白......

  • 为什么回调中有两个=>运算符。
  • ()
  • 的目的是什么?

供参考,以下是SomeFunction的方法签名:

ISomeInterface<T> SomeFunction(Func<IXInterface, T> method);

1 个答案:

答案 0 :(得分:2)

第一个lambda返回第二个lambda(一个函数),它返回一个新对象,在这种情况下类型为T。回想一下,函数(即委托)本身就是一流的对象。

在普通的lambda函数中,有一个lambda参数,&#34;包含&#34;外部范围,如在这个谓词中:

x => x.SomeMember == true;

()只是一个占位符,表示&#34;我不需要lambda参数,因为我不需要引用外部范围。&#34; (x)(x, y)也是有效表单,因此()仅表示&#34;未指定lambda参数。&#34;