1

我有以下问题:(c#)

有一些类(IRC bot),它有方法,需要一些事件的结果才能完成(通过它可能是异步的)。

可能不清楚:

// simplified
class IRC 
{
 void DoSomeCommand()
 {
  OnListOfPeopleEvent += new Delegate(EventData e) { 
   if (e.IsForMe)
   {
    ReturnToUserSomeData();
    // THIS IS WHAT I NEED
    OnListOfPeopleEvent -= THIS DELEGATE;
   }
  }
  TakeListOfPeopleFromIrc();
 }
}

我想在功能完成后删除该委托。有什么方法可以在它本身中获取对闭包的引用?

4

1 回答 1

4

您可以使用捕获自身的低劣变量来做到这一点;-p

SomeDelegateType delegateInstance = null;
delegateInstance = delegate {
    ...
    obj.SomeEvent -= delegateInstance;
};
obj.SomeEvent += delegateInstance;

第一行 withnull需要满足明确的赋值;但是您可以在 anon-method 中捕获此变量。

于 2009-07-07T09:36:52.423 回答