Dispose()影响变量它不应该?

时间:2015-08-09 19:54:27

标签: c#

我是C#的新手,我在处理变量时遇到了麻烦,因为它似乎影响了另一个不应该变量的变量。代码的简化版本是:

!important

它应该很简单:tempconvert传递给Game.image然后被处理掉。除了tempConvert.Dispose()似乎也影响Game.image。没有指针或地址或任何东西,所以我不知道为什么Game.image会受到影响。删除tempConvert.Dispose()可以解决问题,但会造成大量的内存泄漏。

那么,如果tempConvert的内容已经被传递,为什么tempConvert.Dispose()会影响Game.image呢?

2 个答案:

答案 0 :(得分:4)

Bitmap是参考类型。当您将其传递给new Game时,您就会将引用传递给Bitmap的同一个实例。要么制作Bitmap的另一个副本,要么让Game类处理它,具体取决于所需的生命周期以及Bitmap正在使用的其他位置。

答案 1 :(得分:2)

您正在将Bitmap对象的引用传递给Game类,而不是位图的内容。您创建1个Bitmap对象,而不是更多;初始代码和Game对象使用Bitmap对象。

因此,将其置于初始代码中会影响您的Game对象。

相关问题