为了账号安全,请及时绑定邮箱和手机立即绑定

作为参数创建的位图是否需要处理?

作为参数创建的位图是否需要处理?

C#
吃鸡游戏 2021-10-09 10:29:40
我可以简单地写: 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贡献1829条经验 获得超7个赞

基本的经验法则是,如果你创造了它并且它是一次性的,那么你就处置它。


查看完整回答
反对 回复 2021-10-09
?
温温酱

TA贡献1752条经验 获得超4个赞

如果有一个方法,它会创建一个一次性对象并将其返回给消费类或方法。它将清理的责任转移到消费类或方法上。在您的情况下 - 这就是克隆方法。调用 Dispose 的责任从您的示例转移到类/方法。

如果您的 Dispose 是类中的一个字段 - 那么在大多数情况下,您的类还应该实现IDisposable和处理该字段,作为它的 dispose 方法的一部分。

无论何时使用一次性对象,以及使用创建模式(例如工厂)创建一次性对象时,都应该牢记这一点。

在某些情况下,一次性资源由某种包装类处理。例如,在其自己的处置方法中StreamReader处置底层Stream。尽管如此,我们仍然可以对流进行处置,因为 StreamReader 的实现,无论多么不可能,将来都可能会发生变化。


查看完整回答
反对 回复 2021-10-09
  • 2 回答
  • 0 关注
  • 205 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信