私は次のような場合:それはデリゲートをくしゃみているためガベージコレクタはイベントを購読しているオブジェクトをクリアしますか?
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();
}
}
人にあった人は、[0]、まだメモリ内に存在していますがPerson_Sneezingメソッドへの参照を持っているか、それがGCによって収集されますでしょうか?
あなたはそれをリークと呼べますか?もしテストが行くなら人もそうする[0]。 –
もちろん、すべてが消えてしまう*最悪の場合、アプリケーションが終了するとすべて消えてしまう!あなたがそれがなくなると思うときに消えないときは、それを漏れと呼ぶだろう。 – mquander
(また、人物[0]への別の参照をしなかった場合は、それを元に戻すことが難しいため、基本的には無駄に漏れてしまいます。) – mquander