在Lambdas中传递父对象引用

时间:2014-02-27 11:05:10

标签: c# .net lambda delegates

我正在尝试了解以下lambda如何执行。

MyObject.LoginCompleted += (result) => DoSomething(result, MyObject);

我很好奇使用MyObject作为函数参数。这在技术上是否正确,并且在事件发生时实际将MyObject的引用传递给DoSomething()?如果是这样,当执行上述语句时,lambda表达式如何将此引用存储在自身内部?我很好奇,因为我无法想到一个等效的非lambda语句。说:

MyObject.LoginCompleted += DoSomething;

现在除非LoginCompleted事件本身具有父对象的参数(例如LoginCompleted(object sender...)类型的东西),否则我们通常无法在DoSomething()内找到关于MyObject的内容。在lambda的情况下不会发生这种情况,即使事件本身不携带该信息,我们也可以将MyObject作为参数发送给DoSomething()

所以我的问题是:

  1. 我对普通事件处理程序(通过方法委托)的假设是否正确,或者是否存在我缺少的等效代码?
  2. lambda如何在内部存储对象引用?

0 个答案:

没有答案