2014-10-02 2 views
0

현재 이미지를 16x16 픽셀로 축소하고 간단한 자체 작성 알고리즘으로 차이를 계산하는 프로그램을 작성하고 있습니다. 이 작업을 위해, 나는 특정 디렉토리에서 모든 파일을 얻을 다음과 같습니다 개체의 목록으로 그들을 저장할 :VB.NET에서 개체 목록에 개체를 할당해도 값이 저장되지 않습니다.

Dim lFile As New List(Of cFile) 

자체가 파일 경로 문자열로 구성되어있는 객체와 16 매크로 (16)에 의해 이미지 :

Static Test As New cFile 
Test.imageResized = ResizeImage(PictureBox1.Image) 
Test.sFilepath = "image 1" 
lFile.Add(Test) 
:

파일 목록에 새 항목을 추가하려면
Class cFile 
    Public sFilepath As String 
    Public imageResized As Image 
End Class 

, 내가 수정됩니다 및 목록에 새 항목 (들)을 추가하는 데 사용되는 새로운 객체를 생성 한

이제 내 문제는 다음과 같습니다. 목록의 새 항목에 개체를 할당하면 어떻게 든 "ByReference"(이 책을 호출하는 방법이나 내가 검색해야하는 내용을 알지 못합니다)가 할당됩니다. 내가 원하는 것은 "Test"를 변경하면 새로운 것을 얻었을 때 목록의 새 항목이 유지되고 변경되지 않는다는 것입니다. 코드가 약간 크지 만 명확성을 위해 중요하지 않은 부분은 잘라 냈습니다. 누군가가 나를 도울 수 있다면 정말 행복 할거야. 감사!

+1

왜 정적입니까? "Dim Test as New cfile"을 입력하면 어떻게됩니까? – Tuco

+0

'Dim Test As New cFile'이 작동해야합니다. -이 코드가있는 문맥은 없습니다. – Plutonix

답변

0

그래서 참조 유형 인 클래스가 작동하는 방식입니다. 구조체로 cFile을 선언했다면 값 유형이되고 원하는대로 동작합니다.

나는 이것이 적절한 해결책이라고 확신하지 못합니다. cFile 개체의 내용을 변경하는 경우 해당 개체 만 클래스가되어야 함을 나타냅니다.

.NET Framework의 대부분의 형식은 클래스이며 이에 대한 정당한 이유가 있습니다. 클래스를 올바르게 사용하기 위해 유형을 생각하고 작업하는 방식을 변경해야한다고 제안합니다.

cFile 개체를 목록에 추가 한 후에 실제로 변경해야하는 경우 복사하여 변경해야합니다. 클래스를 IClonable으로 구현하고 내부적으로 복사를 수행 할 수 있습니다. 단순히 달성하려는 방식이 아니라 실제 달성하려는 목표에 대한보다 완벽한 설명없이 가장 좋은 옵션이 무엇인지 말하기는 어렵습니다.

관련 문제