我应该在创建之前处置GDI +对象吗?
建议在使用后始终使用Dispose GDI +对象。
例如
Pen p = new Pen(Color.Green);
// use 'p'
p.Dispose();
现在,如果我遇到这种情况:
Pen p = new Pen(Color.Green);
// use green 'p'
p = new Pen(Color.Red); // Should I Dispose my 'p' first?
// use red 'p'
p.Dispose();
编辑A:
每次都不可能使用'USING'。
private Pen p;
public RefreshPen(style)
{
// p.Dispose(); +-
p = new Pen(style.Color);
// etc.
}
编辑B:
这样可以吗?
using (Pen p = new Pen(Color.Green))
{
// use green 'p'
p = new Pen(Color.Red); // Should I Dispose my 'p' first?
// use red 'p'
p = new Pen(Color.Blue); // Should I Dispose my 'p' first?
// use blue 'p'
}
答案 0 :(得分:3)
是的,你应该。 (另请注意,using
语句在这里是一个非常有用的帮助。我非常很少调用.Dispose显式。using
负责处理。)
答案 1 :(得分:1)
是。您正在创建一个新对象并将其分配给p,这意味着您应该处置旧对象。
我可能会这样编码:
using(Pen p = new Pen(Color.Green))
{
//do some stuff
}
using(Pen q = new Pen(Color.Red))
{
//do some other stuff
}
这可以防止您忘记丢弃笔或使用处理过的物体。
答案 2 :(得分:1)
你不能只改变对象的属性吗?
Pen p = new Pen(Color.Green);
//use it here.
p.Color = Color.Red;
//use it some more.
p.Dispose();