我正在尝试了解以下lambda如何执行。
MyObject.LoginCompleted += (result) => DoSomething(result, MyObject);
我很好奇使用MyObject
作为函数参数。这在技术上是否正确,并且在事件发生时实际将MyObject
的引用传递给DoSomething()
?如果是这样,当执行上述语句时,lambda表达式如何将此引用存储在自身内部?我很好奇,因为我无法想到一个等效的非lambda语句。说:
MyObject.LoginCompleted += DoSomething;
现在除非LoginCompleted
事件本身具有父对象的参数(例如LoginCompleted(object sender...)
类型的东西),否则我们通常无法在DoSomething()
内找到关于MyObject的内容。在lambda的情况下不会发生这种情况,即使事件本身不携带该信息,我们也可以将MyObject
作为参数发送给DoSomething()
。
所以我的问题是: