我可以简单地写: using (Graphics graph = Graphics.FromImage(Image1)) { graph.DrawImage(Image2.Clone(Rectangle1, Image2.PixelFormat), 0, 0, Image1.Width, Image1.Height); }或者我应该写: using (Graphics graph = Graphics.FromImage(Image1)) using (Bitmap Image3 = Image2.Clone(Rectangle1, Image2.PixelFormat)) { graph.DrawImage(Image3, 0, 0, Image1.Width, Image1.Height); }
2 回答
温温酱
TA贡献1752条经验 获得超4个赞
如果有一个方法,它会创建一个一次性对象并将其返回给消费类或方法。它将清理的责任转移到消费类或方法上。在您的情况下 - 这就是克隆方法。调用 Dispose 的责任从您的示例转移到类/方法。
如果您的 Dispose 是类中的一个字段 - 那么在大多数情况下,您的类还应该实现IDisposable
和处理该字段,作为它的 dispose 方法的一部分。
无论何时使用一次性对象,以及使用创建模式(例如工厂)创建一次性对象时,都应该牢记这一点。
在某些情况下,一次性资源由某种包装类处理。例如,在其自己的处置方法中StreamReader
处置底层Stream
。尽管如此,我们仍然可以对流进行处置,因为 StreamReader 的实现,无论多么不可能,将来都可能会发生变化。
- 2 回答
- 0 关注
- 205 浏览
添加回答
举报
0/150
提交
取消