在编写一个类似油漆的小型应用程序(为我自己)时,我最初在 onClick 处理程序中调用了以下代码:
g.DrawEllipse((new Pen(pencolour, penSize)), e.X, e.Y, 1, 1);
我后来改为
Pen pen1 = new Pen(pencolour, penSize);
g.DrawEllipse(pen1, e.X, e.Y, 1, 1);
pen1.Dispose();
我的问题是:这两段代码是等价的,还是第一段代码创建了永远不会被处理的 Pen 对象?
最佳答案
当垃圾收集器运行并确定对象不再使用时,它们就会被处理掉。最好自己处理对象,以便立即释放资源。
还要考虑使用 using
语句:
using (Pen pen1 = new Pen(pencolour, penSize))
{
g.DrawEllipse(pen1, e.X, e.Y, 1, 1);
}
这会自动处理 Pen,即使
DrawEllipse
会抛出异常,并且 IDE 将强制 pen1
仅在 using 块中可用。