.Net은 항상 혼동 스럽거나 .Net이 참조를 복사하는 방법에 대해 확신하지 못했습니다. GDI + 용 Bitmap 개체가 있다고 가정 해 보겠습니다.개체 라이브러리 - 색인 값 또는 개체 자체에 액세스 하시겠습니까? (예 : 심도 대 얕은 복사)
dim foo as new bitmap("c:\foo.bmp")
'Foo'는 비트 맵 객체를 보유합니다. 이제 내가 이렇게한다고 가정 해 보겠습니다.
dim bar as bitmap = foo
얕은 사본입니까, 아니면 깊은 사본입니까? foo를 아무 것도 아닌 것으로 설정하면 막대가 갑자기 '아무것도'를 참조하지 않습니까? 아니면 막대가 비트 맵의 복사본을 포함하고, 비트 맵을 메모리에서 완전히 제거하기 위해서 '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
이제 알았습니다. foo를 아무것도 설정하지 않으면 객체를 참조하는 것이 아니라 파기합니다. 그러나 Foo.Dispose()와 같은 참조를 통해 개체에 대한 작업을 수행하면 개체를 제외하고 해당 개체를 가리키는 변수는 삭제되지 않습니다. 어쨌든 내 머리 속에 의미가 있습니다. 고맙습니다! –