Se faccio la seguente:Il garbage collector cancella gli oggetti sottoscritti agli eventi?
public class Test
{
public static void Main()
{
List<Person> persons = new List<Person> { new Person() };
persons[0].Sneezing += new EventHandler(Person_Sneezing);
persons = null;
}
public static void Person_Sneezing(object sender, EventArgs e)
{
(sender as Person).CoverFace();
}
}
La persona che era in persona [0] esiste ancora nella memoria perché è Starnuti delegato ha un riferimento al metodo Person_Sneezing o lo fa ottiene raccolto dal GC?
La chiamereste una perdita? Se Test va via, anche le persone [0]. –
Certo, ma tutto scompare * alla fine * - nel peggiore dei casi, tutto andrà via quando l'applicazione si chiude! Lo chiamerei una perdita quando non se ne va quando pensi che andrà via. – mquander
(Inoltre, se non hai fatto un altro riferimento alle persone [0], ti sarà difficile tornare indietro, quindi è praticamente trapelato nel nulla.) – mquander