这是什么活动?

时间:2010-05-16 07:39:40

标签: 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, e) =>
{
    //some code here
};

我知道 CameraCaptureTask 是一个类,并且有一个公共方法 Show()。这是什么样的事件?什么是(s, e)

5 个答案:

答案 0 :(得分:15)

附加事件处理程序时,您可以通过三种不同的方式进行操作:

老式的冗长方式:

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

anonymous method

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

或者,使用lambda expression

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

想象最后一个作为使用委托的人的“紧凑形式”。你也可以使用大括号:

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

答案 1 :(得分:12)

(s, e) => new CameraCaptureTask().Show();

这是一个匿名代表(lambda expression)。这需要2个参数(se(未使用)),然后创建一个新的CameraCaptureTask并显示它。

答案 2 :(得分:2)

Lambda表示法,s代表sendere代表eventargs,即事件的参数。

答案 3 :(得分:1)

(s, e) => { }

lambda expression。在这种情况下,它只是一种快速定义方法(内联方法)的方法,而无需在类中创建单独的方法。

答案 4 :(得分:0)

如前所述,您看到的语法是lambda表达式。您在简单视图中拥有的代码是以下

的简写
this.MouseLeftButtonUp += Handle_MouseLeftButtonUp;

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

检查其他人提供的引用,Lambda表达提供了更多。