Вот случайный вопрос.
У меня есть объект под названием Обезьяна и объект под названием Банан. Банан выставил событие под названием Ripens, на которое подписывается объект Monkey. Когда вызывается событие Ripens, Обезьяна вызывает свою функцию Consume (), которая, в свою очередь, уничтожает объект Banana.
Пример:
//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();
}
}
Итак, мой вопрос: кровоточит ли Обезьяна память для каждого уничтоженного банана, не отписавшись от его событий. Или обработчики событий в Monkey уничтожаются вместе с бананом?