C# 这是什么活动?

C# 这是什么活动?,c#,windows-phone-7,C#,Windows Phone 7,有人能解释一下这个C代码在做什么吗 // launch the camera capture when the user touch the screen this.MouseLeftButtonUp += (s, e) => new CameraCaptureTask().Show(); // this static event is raised when a task completes its job ChooserListener.ChooserCompleted += (s,

有人能解释一下这个C代码在做什么吗

// launch the camera capture when the user touch the screen
this.MouseLeftButtonUp += (s, e) => new CameraCaptureTask().Show();

// this static event is raised when a task completes its job
ChooserListener.ChooserCompleted += (s, e) =>
{
    //some code here
};
我知道CameraCaptureTask是一个类,有一个公共方法Show()。这是什么样的活动?什么是
(s,e)

这是一个匿名委托()。这将获取两个参数(
s
e
(未使用)),然后创建一个新的CameraCaptureTask并显示它

(s, e) => { }

这是一个很好的例子。在这种情况下,它只是一种定义方法(内联方法)的快速方法,而不必在类中创建单独的方法。

Lambda表示法,
s
代表
发送方
e
代表
事件的参数。

如前所述,您看到的语法是Lambda表达式。您在简化视图中的代码是以下内容的简写

this.MouseLeftButtonUp += Handle_MouseLeftButtonUp;

void Handle_MouseLeftButtonUp(object s, MouseButtonEventArgs e)
{
  new CameraCaptureTask().Show(); 
}

查看其他人提供的引用,Lambda表达式提供了更多信息。

在附加事件处理程序时,可以通过三种不同的方式执行:

老式冗长的方式:

this.MouseLeftButtonUp += Handle_MouseLeftButtonUp;
void Handle_MouseLeftButtonUp(object s, MouseButtonEventArgs e)
{
  new CameraCaptureTask().Show(); 
}
安:

或者,使用:

假设最后一个是使用委托的一个的“紧凑形式”。也可以使用大括号:

this.MouseLeftButtonUp += (s, e) => {
  new CameraCaptureTask().Show(); 
}

或者更古老的没有类型推断的手柄(MouseLeftButtonUp),;
this.MouseLeftButtonUp += delegate(object s, MouseButtonEventArgs e) {
  new CameraCaptureTask().Show(); 
}
this.MouseLeftButtonUp += (s, e) => new CameraCaptureTask().Show(); 
this.MouseLeftButtonUp += (s, e) => {
  new CameraCaptureTask().Show(); 
}