为什么取不到?b又不为空,这个和GC没有关系吧

解决方案 »

  1.   

    这样写是可以取到b.Y的值的,因为对象还存在。
    对象就连Dispose方法都没有执行,怎么会回收呢
      

  2.   

    如果调用的是 Form.Close,那么 dispose 被调用,资源被释放,但是变量引用的对象还是在的,只不过状态不对了ShowDialog 的行为又有不同,它返回后,窗体只是隐藏,没有销毁,当然可以访问。这也意味着,如果用的是局部变量,你应当显式销毁它。Form1 b = new Form1();
    b.ShowDialog();
    int c=b.Y;
    b.Dispose();
      

  3.   

    Close和Dispose只是释放资源,如果对象的类实现组件模型,就是依次释放各级资源.不牵涉释放资源的东西,只要引用还存在,那就还可以访问.比如b.Y只是一个Int,还可以访问,但b中如果有一个以组件模型的方式嵌入的一个Image,那肯定就不能访问了.