我一直对 .Net 如何复制引用感到困惑/不确定。假设我有一个 GDI+ 的位图对象。
dim foo as new bitmap("c:\foo.bmp")
'Foo' 保存位图对象。现在假设我这样做。
dim bar as bitmap = foo
这是浅拷贝还是深拷贝?如果我将 foo 设置为无,bar 是否也会突然引用“无”?或者 bar 是否也包含位图的副本,并且为了从内存中完全删除位图,我需要将 'foo' 和 'bar' 都设置为空?
我需要在内存中保留一个位图库,对我来说,将每个创建的对象中每个位图的引用存储为变量会更容易,而不是使用索引对其进行编码并且每次都必须引用该库需要它(例如'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