这段代码意味着什么(s,e)?

Hun*_*unt 8 asp.net silverlight silverlight-oob

这段代码是如何工作的?

      app.InstallStateChanged += (s, e) => UpdateUI();
      NetworkChange.NetworkAddressChanged +=
            (s, e) => UpdateNetworkIndicator();
Run Code Online (Sandbox Code Playgroud)

有人可以解读这个吗?

该代码来自Silverlight 4 OOB系统中使用的示例http://msdn.microsoft.com/en-us/library/dd833066(v=VS.95).aspx

UpdateNetworkIndicator不返回任何内容.UpdateUI不返回任何内容.

Chr*_*ann 9

这是一个lambda表达式.

"所有lambda表达式都使用lambda运算符=>,它被读作"转到".lambda运算符的左侧指定输入参数(如果有的话),右侧包含表达式或语句块.lambda表达式x => x*x被读为"x转到x乘x".

http://msdn.microsoft.com/en-us/library/bb397687.aspx


Ste*_*rex 9

这是一个包含多个参数的lambda表达式.在这种情况下(当您使用函数替换事件处理程序时),它们等同于objectEventArgs参数.

您的代码等同于以下内容

app.InstallStateChanged += OnInstallStateChanged;
NetworkChange.NetworkAddressChanged += OnNetworkAddressChanged;

/* ... */

private void OnInstallStateChanged(object s, EventArgs e)
{
    UpdateUI();
}

private void OnNetworkAddressChanged(object s, EventArgs e)
{
    UpdateNetworkIndicator();
}
Run Code Online (Sandbox Code Playgroud)


Kev*_*vek 6

UpdateUI()和UpdateNetworkIndicator()方法都是自定义事件处理程序方法.

+ =运算符将这些事件处理程序分别附加到app和NetworkChange触发的事件.

=>表示lambda表达式.(s,e)是输入参数(在这种情况下,标准发送者,事件args),=>的右边是语句或表达式.

在这种情况下,您可以将其重写为:

app.InstallStateChanged += UpdateUI;
NetworkChange.NetworkAddressChanged += UpdateNetworkIndicator;
Run Code Online (Sandbox Code Playgroud)

它也应该工作.