假设我有一个程序,例如单击按钮。
我创建了一个 Graphics 对象。
显然我应该处理掉它,例如
using(Graphics gr__=this.CreateGraphics()) {
}
或通过调用.Dispose()
in the finally
try-catch-finally 的。
但考虑到该程序很快就会结束。
假设我在过程本地创建它(不是全局的,不是在使用中)。但对于程序来说是本地的。
那么肯定像任何其他变量一样,当过程完成时它会被自动处理,不是吗?
那么为什么手动/显式处理它对我来说很重要呢?
为什么我不能让它像其他变量一样自动进行垃圾收集?
当然,它可能比“int”大一点,但它可能仍然很小,并且不会在内存中保存很长时间,因为无论如何程序结束得如此之快。甚至可能是在使用完毕后或Dispose()
被调用,过程结束,因此我想如果变量是过程的本地变量,它就会被处理。那么为什么要费心去显式垃圾回收呢?Dispose()
/using
?
Microsoft .NET 类库通过 System.Drawing 命名空间为 GDI+ 提供托管接口。 https://en.wikipedia.org/wiki/Graphics_Device_InterfaceGDI+ 基于 C++,并生成对非托管对象的引用。因此,处置 System.Drawing 命名空间的一次性对象非常重要,因为垃圾收集器不会自动处置非托管对象。这些对象可能包含完成这项工作的终结器;但是,您无法控制这些终结器的执行时间。待处理的终结器也使堆变得混乱。因此最好致电Dispose()
明确地或通过using
-陈述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)