我有以下问题:(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();
}
}
我想在函数完成后删除该委托(delegate)。有什么方法可以获取闭包本身的引用吗?
最佳答案
你可以用一个捕获自身的 cheaky 变量来做到这一点;-p
SomeDelegateType delegateInstance = null;
delegateInstance = delegate {
...
obj.SomeEvent -= delegateInstance;
};
obj.SomeEvent += delegateInstance;
要求第一行null
满足明确赋值;但您可以在匿名方法中捕获此变量。
关于c# - 在闭包中访问 'self' 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1091290/