C# 这是什么活动?
有人能解释一下这个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,
// 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();
}