Pet*_*pie 4 c# garbage-collection
在编写一个类似绘画的小应用程序(对我来说)时,我最初在onClick处理程序中调用了以下代码:
g.DrawEllipse((new Pen(pencolour, penSize)), e.X, e.Y, 1, 1);
Run Code Online (Sandbox Code Playgroud)
我后来改为
Pen pen1 = new Pen(pencolour, penSize);
g.DrawEllipse(pen1, e.X, e.Y, 1, 1);
pen1.Dispose();
Run Code Online (Sandbox Code Playgroud)
我的问题是:两个代码是等价的,还是第一个创建Pen对象,它们永远不会被丢弃?
它们在垃圾收集器运行时处理并确定该对象不再使用.最好自己处理对象,以便立即释放资源.
还要考虑使用该using声明:
using (Pen pen1 = new Pen(pencolour, penSize))
{
g.DrawEllipse(pen1, e.X, e.Y, 1, 1);
}
Run Code Online (Sandbox Code Playgroud)
这会自动处理Pen,即使DrawEllipse会抛出异常,IDE也会强制执行,pen1只能在using块中使用.
| 归档时间: |
|
| 查看次数: |
135 次 |
| 最近记录: |