使用C#Lambda运算符

使用C#Lambda运算符,c#,.net,lambda,ffmpeg,C#,.net,Lambda,Ffmpeg,我试图理解在()中格式化给定参数时如何使用C#中的lambda运算符,如下所示: _backgroundVideoWorker.DoWork += (s, e) => { outputFile = _videoEditor.JoinVideo(selectedConfiguration, videoFiles); }; 我问这个问题的主要目的是了解lambda如何使用不同的运算符,+=(s,e)=> 为了便于参考,此代码摘录取自使用

我试图理解在()中格式化给定参数时如何使用C#中的lambda运算符,如下所示:

_backgroundVideoWorker.DoWork += (s, e) => 
       { 
           outputFile = _videoEditor.JoinVideo(selectedConfiguration, videoFiles); 
       };
我问这个问题的主要目的是了解lambda如何使用不同的运算符,
+=(s,e)=>


为了便于参考,此代码摘录取自使用FFMPEG实用程序将两个视频文件连接在一起的应用程序

\u backgroundVideoWorker.DoWork
是一个需要处理程序的事件

+=
表示我们正在添加事件处理程序来处理事件


(s,e)
表示表达式正在创建一个函数,该函数接受事件要求函数处理的
s
e
参数。它们表示一个对象(
s
)和
DoWorkEventArgs
e
)。如果要编写完整的函数块而不是内联lambda,则它们看起来像
(对象s,DoWorkEventArgs e)
,或者更熟悉的是
(对象发送器,DoWorkEventArgs e)

是委托类型为的事件,其签名为:

public delegate void DoWorkEventHandler(object sender, DoWorkEventArgs e)
这意味着DoWork将是一个函数,它接收两个参数,分别为
object
DoWorkEventArgs


事件处理程序必须遵循与事件的委托相同的签名,因此,当您指定
(s,e)=>{/*..*/}
作为事件处理程序时,编译器将假定
s
对应于
对象发送方
参数,而
e
对应于
DoWorkEventargs e
参数。当然,您不必将它们命名为
s
e

s
e
表示传递给