首页 新闻 会员 周边 捐助

还是关于作用域的问题 请大神给我解释下

0
悬赏园豆:20 [已解决问题] 解决于 2014-08-29 17:11

我知道 一个方法在运行完毕以后 方法局部值变量和指针就会被销毁 

但是类的作用域 是怎么才会被销毁呢? 

好比这个Form窗体 我是关闭了它 Form这个类才会被销毁吗?

还望大神给解释下 谢谢

狂扁小朋友的主页 狂扁小朋友 | 初学一级 | 园豆:10
提问于:2014-08-29 10:59
< >
分享
最佳答案
1
namespace Demo
{
    public class classA
    {
        public void CallB()
        {
            classB b = new classB();
            b.DoSomeThing();
        }
    }

    public class classA2
    {
        private classB _b = new classB();

        public void CallB()
        {
            _b.DoSomeThing();
        }
    }

    public class classB
    {
        public void DoSomeThing()
        {
            //
        }
    }
}

不知道我这么写你能理解不?

classA中,函数CallB()结束,指向b的指针就销毁了。
classA2中,_b要等到自身的实例被销毁后才会销毁。

收获园豆:20
Firen | 大侠五级 |园豆:5385 | 2014-08-29 17:08
其他回答(4)
0

类的作用域简称类域,他是指在类的定义中由一对花括号所括起来的部分。每一个类都具备该类的类域,该类的成员局部于该类所属的类域中。

销毁应该是:等垃圾回收器运行,到时候没有被引用的对象就会被垃圾回收器回收

骑着蜗牛耍流氓 | 园豆:135 (初学一级) | 2014-08-29 11:10

那大神 类域在什么情况下才会被超出呢? 

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2014-08-29 11:12

@狂扁小朋友: 这太高深了,我也不太清楚

支持(0) 反对(0) 骑着蜗牛耍流氓 | 园豆:135 (初学一级) | 2014-08-29 11:17
0

类怎么销毁?应该是对象吧。当一个对象没有被引用的时候系统会自动回收这个对象占用的资源,也就算“销毁”了吧。愚见!

哈巴猫 | 园豆:202 (菜鸟二级) | 2014-08-29 11:12

 我现在唯一纠结的是怎么才算未被引用呢? 比如一个对象,在一个方法里执行,这个方法执行完毕以后,这个对象的指针才会被销毁呢?

支持(0) 反对(0) 狂扁小朋友 | 园豆:10 (初学一级) | 2014-08-29 11:17

@狂扁小朋友: 应该是这么理解的,好像C#也有析构函数的,你可以写一个析构函数,调试一下,当调用析构函数的时候,就是资源回收的时候吧。

支持(0) 反对(0) 哈巴猫 | 园豆:202 (菜鸟二级) | 2014-08-29 11:23
0

关闭form后,窗体不一定会被销毁,关键还是在作用域的概念理解上。

当你构建一个窗体对象后,这个对象你要保存到一个变量吧?如果你保存到了一个变量,那么这个窗体被销毁(超出作用域)的情况是承载这个窗体的变量的作用域。

窗体被关闭后,只是说明这个窗体不能再显示了,关闭后的窗体,在作用域范围内,还是能操作窗体类内部的相关数据的。

当然,如果你没把窗体对象放置到一个变量,而是直接show,比如:new Form1().Show(),当然是在窗体被关闭后就会被销毁。

519740105 | 园豆:5810 (大侠五级) | 2014-08-29 11:12
0

其实我对这个作用域的理解为:只要这个对象或类不在被用到了,他就销毁掉了。有时候发现你程序占用资源很多因为你还用到这个对象。所以使用完类后要手动清除对象,防止内存泄露。

三国郭海 | 园豆:280 (菜鸟二级) | 2014-08-29 15:57
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册