任何人都可以用简单的英语告诉我下面的代码中发生了什么,特别是关于=>和+=符号的用法:
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)
您为事件分配了新的委托:
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)
(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函数类型是兼容的,因此在触发事件时将调用它.