日期:2014-05-18  浏览次数:20779 次

小问dispose
A指向一个可dispose的对象,B指向A。
那么A调用dispose的时候,B会受影响吗?请高人详解下~

------解决方案--------------------
你的代码可以约等于这样。
void BBC()
{
Font font1 = new Font("Arial", 9);
this.font = font1;
font1.Dispose();
}

IDisposable只是一个接口而已,在语言层面并没有特殊的含义。
对于外界来说,调用A.AAA()方法和调用Dispose方法没有什么本质不同而已。只是人为的给Dispose方法加上了释放了非托管资源的含义,并且有着using这个特殊对待而已。
------解决方案--------------------
探讨

那楼上的高人,能不能解释下,为什么this.font在font1调用dispose后仍然不受影响呢?

------解决方案--------------------
探讨

其实我想问的是,我要在我的代码中有类似6楼代码这样的用法,我想问的是这样的做法对不对?就是在把local font赋值给this.font后,把local font直接dispose掉,这种做法对不对?

using (Font font = new Font("Arial", 9))
{
this.font = font;
}

------解决方案--------------------
探讨
其实我想问的是,我要在我的代码中有类似6楼代码这样的用法,我想问的是这样的做法对不对?就是在把local font赋值给this.font后,把local font直接dispose掉,这种做法对不对?

using (Font font = new Font("Arial", 9))
{
this.font = font;
}