this.Loaded + = (s, e) => this.loaded = true ;? - PullRequest
2 голосов
/ 04 марта 2010

кто-нибудь, пожалуйста, напишите этот код:

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

в несколько строк кода, чтобы я мог восстановить значение?

В моем примере кода нет s или e ?

Ответы [ 2 ]

7 голосов
/ 05 марта 2010

Это может сделать его немного понятнее, просто переименовав:

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; в противном случае подпись будет отличаться очевидным способом.)

0 голосов
/ 05 марта 2010

Это сокращение для обработчика событий. s - это то, что вы обычно видите как object sender, а e - это какой-то тип EventArgs. В основном это можно написать так:

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

и код вызова будет выглядеть примерно так:

this.Loaded += MyHandler;
...