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不返回任何内容.
这是一个lambda表达式.
"所有lambda表达式都使用lambda运算符=>,它被读作"转到".lambda运算符的左侧指定输入参数(如果有的话),右侧包含表达式或语句块.lambda表达式x => x*x被读为"x转到x乘x".
http://msdn.microsoft.com/en-us/library/bb397687.aspx
这是一个包含多个参数的lambda表达式.在这种情况下(当您使用函数替换事件处理程序时),它们等同于object和EventArgs参数.
您的代码等同于以下内容
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)
UpdateUI()和UpdateNetworkIndicator()方法都是自定义事件处理程序方法.
+ =运算符将这些事件处理程序分别附加到app和NetworkChange触发的事件.
=>表示lambda表达式.(s,e)是输入参数(在这种情况下,标准发送者,事件args),=>的右边是语句或表达式.
在这种情况下,您可以将其重写为:
app.InstallStateChanged += UpdateUI;
NetworkChange.NetworkAddressChanged += UpdateNetworkIndicator;
Run Code Online (Sandbox Code Playgroud)
它也应该工作.
| 归档时间: |
|
| 查看次数: |
301 次 |
| 最近记录: |