private void button1_Click(object sender, System.EventArgs e)
{
Form2 f=new Form2(); //Form2是另外一窗体
f.show(); //显示窗体
}
问题是:f是Form2类是一个实例,也是一个普通的对象变量,退出{}后f应该被释放,那么窗体也应该被释放,可是窗体却还能显示在那儿?这是为什么?
{
Form2 f=new Form2(); //Form2是另外一窗体
f.show(); //显示窗体
}
问题是:f是Form2类是一个实例,也是一个普通的对象变量,退出{}后f应该被释放,那么窗体也应该被释放,可是窗体却还能显示在那儿?这是为什么?
Form2 f=new Form2(); f.show();调用f这个对象的方法。我的理解。请指正!
虽然变量f已经超出了生存期,但它指向的对象并没有。
对象什么情况才符合回收的条件,可以看下。NET资料(我也没多大深入了解)
对象指针f和系统指针都指向from,虽然变量f已经超出了生存期,但系统指针没有,
所以当你点击关闭按扭时,将会调用系统事件,由系统指针来释放这块内存。
窗体是由操作系统管理的.
只有向windows发送一定的消息,操作系统负责退出消息循环,从而窗体生命结束.
而你的form 只是内容中的对象, 其实就是一块数据,
离开作用域范围, 即使进行了垃圾回收后, 只是回收了这块内存. 并没有
释放这些非拖管资源。其实就象打开一个文件后, 没有close
却离开了作用域。