奇怪的lambda表达

时间:2015-07-06 13:50:51

标签: c# lambda

我正在浏览一些c#源代码并遇到了这段代码,我不明白。

someVariable += (s,_) => this.Close();

这里发生了什么?

3 个答案:

答案 0 :(得分:6)

下划线是有效的变量名称。它应该表示很可能是未使用的变量。

我像这样使用它来表示变量没有被进一步使用:

someVariable += (_,__) => this.Close();

答案 1 :(得分:2)

s_只有这个lambda函数中没有使用的参数。

答案 2 :(得分:2)

正如其他人已经说过的那样,s_是用作匿名方法参数的变量。
为了您的理解,这个

someVariable += (s,_) => this.Close();

几乎相同
someVariable += AnonymousMethod;

private void AnonymousMethod(object s, object _) 
{
   this.Close();
}

方法的参数类型由事件someVariable的定义自动推断。我使用object,因为我们不知道事件是如何定义的。