this.Loaded + =(s,e)=> this.loaded = true;?

时间:2010-03-04 20:58:09

标签: events c#-3.0 lambda

有人请写下这段代码:

this.Loaded + =(s,e)=> this.loaded = true;

到几个代码行,所以我可以追溯其含义?

在我的代码示例中,没有 s e

2 个答案:

答案 0 :(得分:7)

这可能会让它更清晰,只需重命名:

this.Loaded += (sender, args) => this.loaded = true;

或者给他们提供类型:

this.Loaded += (object sender, EventArgs args) => this.loaded = true;

他们是代表的参数。这是C#2中的等价物:

this.Loaded += delegate (object sender, EventArgs args) { this.loaded = true; };

这有帮助吗?

这是C#1中的等价物(幸运的是,没有捕获的变量,这使得生活更容易......)

this.Loaded += new EventHandler(SetLoadedToTrue);

...

private void SetLoadedToTrue(object sender, EventArgs args)
{
    this.loaded = true;
}

(这都假设Loaded事件的类型为EventHandler;如果不是,则签名会以明显的方式不同。)

答案 1 :(得分:0)

这是事件处理程序的简写。 s是您通常看到的object sender,而eEventArgs的某种类型。 基本上它可以这样写:

public void MyHandler(object sender, EventArgs e)
{
   this.loaded = true;
}

,调用代码如下:

this.Loaded += MyHandler;