.Net が参照をコピーする方法について、私は常に混乱/不確かでした。GDI+ 用の Bitmap オブジェクトがあるとします。
dim foo as new bitmap("c:\foo.bmp")
「Foo」はビットマップ オブジェクトを保持します。今、私がこれをするとしましょう。
dim bar as bitmap = foo
これは浅いコピーですか、それとも深いコピーですか? foo を何も設定しない場合、bar も突然「何もない」を参照しますか? または、バーにはビットマップのコピーも含まれていますか?ビットマップをメモリから完全に削除するには、「foo」と「バー」の両方を何も設定する必要がありますか?
ビットマップのライブラリをメモリに保持する必要があります。インデックスを使用してコーディングし、毎回ライブラリを参照するよりも、作成された各オブジェクトの各ビットマップへの参照を変数として格納する方が簡単です。必要です (「BitmapLibrary.Singleton.getBitmap(id)」など)
一言で言えば、私はこれを行うことができます:
struct graphic object
dim myBitmap as bitmap
sub draw(g as graphics)
g.drawimage(myBitmap)
end sub
これの代わりに:
struct graphic object
dim myBitmapIndex as integer
sub draw(g as graphics)
g.drawimage(bitmaplibrary.getImage(myBitmapIndex))
end sub