我刚刚开始使用现有代码库开发项目。在查看项目时,我发现了一个奇怪的lambda,我正在努力理解。
以下是代码:
SomeFunction(x => () => new Y());
我不明白......
=>
运算符。()
。供参考,以下是SomeFunction
的方法签名:
ISomeInterface<T> SomeFunction(Func<IXInterface, T> method);
答案 0 :(得分:2)
第一个lambda返回第二个lambda(一个函数),它返回一个新对象,在这种情况下类型为T
。回想一下,函数(即委托)本身就是一流的对象。
在普通的lambda函数中,有一个lambda参数,&#34;包含&#34;外部范围,如在这个谓词中:
x => x.SomeMember == true;
()
只是一个占位符,表示&#34;我不需要lambda参数,因为我不需要引用外部范围。&#34; (x)
和(x, y)
也是有效表单,因此()
仅表示&#34;未指定lambda参数。&#34;