创建一个委托,并绑定一个实例的方法。然后设置该实例为空,可是该委托还是可执行。为什么?
此时 t 为 null ,但是 h.Target 不为 null , 不知为什么。
当执行了 t = null ; 时,gc 可回收 t 么? public delegate void MsgHandler(); public class Test
{
public void Msg()
{
MessageBox.Show("Msg");
}
}在 Form 中 :
private void Form1_Load(object sender, EventArgs e)
{
Test t = new Test() ;
MsgHandler h = t.Msg; t = null; h(); // 依然支持执行
}
此时 t 为 null ,但是 h.Target 不为 null , 不知为什么。
当执行了 t = null ; 时,gc 可回收 t 么? public delegate void MsgHandler(); public class Test
{
public void Msg()
{
MessageBox.Show("Msg");
}
}在 Form 中 :
private void Form1_Load(object sender, EventArgs e)
{
Test t = new Test() ;
MsgHandler h = t.Msg; t = null; h(); // 依然支持执行
}
否则,只要B存在,A 就不会被gc回收。不知解释的是否合理,谢谢楼上的兄弟们关注.