使用C#Lambda运算符
我试图理解在()中格式化给定参数时如何使用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)=> 为了便于参考,此代码摘录取自使用
_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
和es
和e
表示传递给