我正在使用其他人的实用工具方法,而且它似乎使用了lambda表达式语法,我无法阅读。定义了一个参数
Func<Action<int>, Action<Exception>, EventHandler<CustomEventArgs>> getCompleteHandler
Func的原型是
delegate TResult System.Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2)
在示例代码中,使用以下方法调用该方法:
getCompleteHandler: (Action<int> complete, Action<Exception> reject) =>
(
(object sender, CustomEventArgs args) =>
{
complete(args.IntVar);
}
)
在调用的第二行,括号直接跟在第一个lambda运算符之后,包含内部lambda。我还没有在其他地方看到过这种语法,但是有一个完整的lambda表达式,我只期望一个类型转换和一个方法体。内部lambda对getCompleteHandler表示什么?
答案 0 :(得分:0)
string phone = "111-222-8765";
phone = phone.Insert(0, "("); // (111-222-8765
phone = phone.Insert(3, ")"); // (111)-222-8765
。
(分组)括号实际上被忽略了。编码器可能选择了语法,因为它增加了清晰度(对他/她)或者符合某些约定;这种括号的使用根本不会改变解析或语义。
就个人而言,我不会添加括号。
评估外部lambda-as-Func返回内部lambda-as-Action,在x = 1; x = (1); x = ((1)); x = ..
上形成一个闭包。稍后将对返回的Action进行评估。
想象:
complete