使用"=>"进行语法澄清

Asi*_*sif 4 c# lambda

任何人都可以用简单的英语告诉我下面的代码中发生了什么,特别是关于=>+=符号的用法:

var ls = new LibraryServiceClient(AppSettings.Get("LibraryServiceBaseAddress"), 
                                  SessionId, App.Id, _user.UUID);
ls.MakingRequest += (s, e) =>
{
    LogStash.LogDebug("Library Service | Before making request  : {0}",
    DateTime.UtcNow.ToString("HH:mm:ss.fff"));
};
Run Code Online (Sandbox Code Playgroud)

Pat*_*man 7

您为事件分配了新的委托:

ls.MakingRequest +=
Run Code Online (Sandbox Code Playgroud)

您创建一个lambda表达式,一个具有两个参数的函数,s并且e:

 (s, e) =>
Run Code Online (Sandbox Code Playgroud)

lambda表达式的动作是:

{ LogStash.LogDebug("Library Service | Before making request  : {0}", DateTime.UtcNow.ToString("HH:mm:ss.fff"));
Run Code Online (Sandbox Code Playgroud)


Pet*_*nov 6

(s,e) => { /*expresion*/ }
Run Code Online (Sandbox Code Playgroud)

是一个lambda函数.

它的类型是Action<object, EventArgs>.

ls.MakingRequest
Run Code Online (Sandbox Code Playgroud)

是一个事件.

随着+=您为此事件注册处理程序.触发事件时,所有已注册的处理程序都将执行.

处理程序与操作具有相同的签名 - 它采用object发件人和EventArgseventArgs并返回void.因此,lambda函数类型是兼容的,因此在触发事件时将调用它.