这个奇怪的'链'Lambda (x =>() =比;y)
本文关键字:Lambda | 更新日期: 2023-09-27 18:14:42
我刚刚开始使用现有的代码库处理一个项目。在查看项目时,我发现了一个奇怪的lambda,我试图理解它。
代码如下:
SomeFunction(x => () => new Y());
我不明白…
- 为什么回调中有两个
=>
操作符 -
()
的目的是什么?
参考SomeFunction
的方法签名:
ISomeInterface<T> SomeFunction(Func<IXInterface, T> method);
第一个lambda返回第二个lambda(一个函数),该函数返回一个新对象,在本例中为T
类型。回想一下,函数(即委托)本身就是一级对象。
在一个普通的lambda函数中,有一个lambda形参"封闭"外部作用域,如下面的谓词所示:
x => x.SomeMember == true;
()
只是一个占位符,表示"这里我不需要lambda参数,因为我不需要引用外部作用域。"(x)
和(x, y)
也是有效的形式,因此()
仅表示"没有指定lambda参数"。