给定一个带有N个参数的函数,为什么可以为它指定一个没有明确声明任何参数的委托?例如
Func<int, string, object, string, bool> test;
// (1) this makes sense to me
test= delegate (int a, string b, object c, string d) { return true; };
// (2) this also makes sense to me
test= (a,b,c,d)=>true;
// (3) why does this work?
test = delegate { return true; };
为什么(3)有效? (1),(2)和(3)之间有什么区别吗?我们可以从第三个变体的大括号内部访问参数吗?
答案 0 :(得分:3)
为什么(3)有效?
来自C# programming guide on MSDN:
匿名方法使您可以省略参数列表。这意味着可以将匿名方法转换为具有各种签名的委托
(1),(2)和(3)之间有什么区别吗?
delegate keyword vs. lambda notation
我们可以从第三个变体的大括号内部访问参数吗?
没有。如果您打算在匿名方法中使用这些参数,请不要省略参数列表。