Si hago lo siguiente:¿El recolector de basura despeja objetos suscritos a eventos?
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 que estaba en persona [0] todavía existe en la memoria porque está Estornudos delegado tiene una referencia al método Person_Sneezing o se consigue recogido por el GC?
¿Lo llamarías una gotera? Si la prueba va bien, también lo hacen las personas [0]. –
Claro, pero todo se va * finalmente * - en el peor de los casos, ¡desaparecerá cuando finalice su aplicación! Yo diría que es una filtración cuando no se va cuando crees que va a desaparecer. – mquander
(Además, si no hizo otra referencia a personas [0], tendrá dificultades para recuperarla, por lo que básicamente se filtró a la nada). – mquander