社区
C#
帖子详情
关闭窗口后还能访问其中的变量
startexcel
2010-11-01 09:17:03
Form1 b = new Form1();
b.ShowDialog();
int c=b.Y;
这时居然还能取得到b.Y的值,为什么?是GC还没有回收吗?如果是的话那这样写不是很不保险,有可能会取不到值?
...全文
93
7
打赏
收藏
关闭窗口后还能访问其中的变量
Form1 b = new Form1(); b.ShowDialog(); int c=b.Y; 这时居然还能取得到b.Y的值,为什么?是GC还没有回收吗?如果是的话那这样写不是很不保险,有可能会取不到值?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
startexcel
2010-11-15
打赏
举报
回复
还有更好的答案吗?
jointan
2010-11-01
打赏
举报
回复
Close和Dispose只是释放资源,如果对象的类实现组件模型,就是依次释放各级资源.不牵涉释放资源的东西,只要引用还存在,那就还可以访问.比如b.Y只是一个Int,还可以访问,但b中如果有一个以组件模型的方式嵌入的一个Image,那肯定就不能访问了.
phil999
2010-11-01
打赏
举报
回复
如果调用的是 Form.Close,那么 dispose 被调用,资源被释放,但是变量引用的对象还是在的,只不过状态不对了
ShowDialog 的行为又有不同,它返回后,窗体只是隐藏,没有销毁,当然可以访问。这也意味着,如果用的是局部变量,你应当显式销毁它。
Form1 b = new Form1();
b.ShowDialog();
int c=b.Y;
b.Dispose();
dobdream
2010-11-01
打赏
举报
回复
这样写是可以取到b.Y的值的,因为对象还存在。
对象就连Dispose方法都没有执行,怎么会回收呢
skyering
2010-11-01
打赏
举报
回复
b的实例仍然存在。
dapenge
2010-11-01
打赏
举报
回复
取到了 所以取得到
ZengHD
2010-11-01
打赏
举报
回复
为什么取不到?b又不为空,这个和GC没有关系吧
QT主
窗口
与子
窗口
互相传值笔记
1.主
窗口
向子
窗口
传值: 将子
窗口
定义为主
窗口
的成员
变量
,在子
窗口
中定义接受数据的成员
变量
,主
窗口
中可以使用子
窗口
成员
变量
来
访问
他的成员
变量
,于是就能直接赋值了。 void Main_wgt::test() { son_wgt.num="18"; } 2.子
窗口
向主
窗口
传值: 子
窗口
向主
窗口
传值需要用到信号。首先在子
窗口
中设置含参信号,再在主
窗口
中定义槽函数,接收到子
窗口
的信号便完成了值的传递 子
窗口
头文件: signals: void sigtom(int); 子
窗口
函数
窗口
间
变量
传递
虽然没碰到过多少,至少现在遇到了以下几种
变量
传递的情况:1。主
窗口
向子
窗口
传递;2。子
窗口
向主
窗口
传递;3。子
窗口
间互相传递;下面分别介绍。一、主
窗口
向子
窗口
传递
变量
1、 在主
窗口
中如是全局
变量
,可在子
窗口
中直接用extern声明而在子
窗口
中直接用,前提是必须包含主
窗口
的头文件。例如:主
窗口
CMainDlg,子
窗口
CSub,在主
窗口
中定义全局
变量
int temp;temp = 2
MFC 主
窗口
调用子
窗口
功能:MFC主
窗口
创建子
窗口
,同时隐藏本
窗口
;当子
窗口
关闭
时,继续显示主
窗口
;子
窗口
关闭
时,复写
关闭
窗口
函数。 1 在主
窗口
,创建两个按钮。 2 创建两个子
窗口
界面。资源视图->Dialog(右键)->添加资源->Dialog。然后将对应的名字修改了,我改成了IDD_WINDOW_ONE和IDD_WINDOW_TWO。 3 右键新建出来的
窗口
,添加类。我这里设置两个类:windowOne和windowTwo。 4 在主
窗口
的***Dlg.h添加上面两个.h文件,同时初始化两
Qt
窗口
hide()后的
关闭
机制
假设有这么一个“游戏”需求: 1、用户登陆界面。 2、登陆成功后,才能进入“游戏”主界面。 如图: 登陆成功了,游戏界面显示了,但登陆界面并没有消失/隐藏。 为了使登陆界面隐藏,我们调用了hide()函数: 问题来了: 当“游戏”
窗口
关闭
后,这个隐藏的“登陆”
窗口
怎么办?是否还在运行?如果
关闭
了,是属于正常
关闭
么? 当然,强大的“信号和槽”机制给任何问题都提供了一个
pb中
窗口
的打开和
关闭
Close()功能
关闭
窗口
并释放
窗口
以及
窗口
上的控件所占据的内存。语法Close(windowname)参数windowname:要
关闭
窗口
的名称返回值Integer。函数执行成功时返回1,发生错误时返回-1。如果参数windowname的值为NULL,Close()函数返回NULL。用 法应用程序使用Open()或其它Open簇函数打开
窗口
后,不需要
窗口
时,可以使用Close()
关闭
窗口
并释放
窗口
以及
窗口
上所有控件占据的内存。 Close()函数的执行过程为:如果要
关闭
窗口
的CloseQuery和/或
C#
110,534
社区成员
642,576
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章