這是一個隨機問題。動態事件處理
我有一個叫做Monkey的對象,和一個叫做Banana的對象。香蕉揭露了Monkey對象訂閱的一個叫做Ripens的事件。當Ripens事件被觸發時,猴子調用它的Consume()函數,這反過來破壞了香蕉對象。
例子:
//And yes, I know this isnt real C# code. Just trying to get my point across and
//not necessarily be syntatically correct with this exmaple.
public class Banana
{
public event Ripens;
}
public class Monkey
{
public Monkey()
{
List<Banana> tree = new List<Banana>();
for (int i = 0; i < 8; i ++)
{
tree.Add(new Banana());
tree[i].Ripens += this.Consume;
}
}
public void Consume(Banana b)
{
tree.Remove(b);
b.Destroy();
}
}
所以我的問題是,然後:請問猴子流血內存,以便在沒有從事件第一退訂摧毀每一根香蕉。或者猴子的事件處理程序與香蕉一起銷燬?
http://stackoverflow.com/questions/298261/do-event-handlers-stop-garbage-collection-from-occuring的副本。答案是否定的,不管是否有訂閱,都會收集香蕉。 – Andrei 2011-06-12 23:20:14