2010-01-02 3 views
1

user_class라는 데이터 구조 (클래스)가 있는데 데이터베이스에서 모든 사용자 데이터를로드하려고합니다.목록 함수의 Add 메서드에 대한 문제

은 현재 내가

RETURN_VALUE가 user_class 및 hold_user의 목록입니다
 While SQLreader.Read() 
     Hold_user.username = SQLreader(0) 
     Hold_user.BlahBlahBlah = SQLreader(1) 
     Hold_user.Secret_Password = SQLreader(2) 
     return_value.Add(Hold_user) 
     End While 

가 같은 클래스의 인스턴스가 있습니다. while 문은 판독 데이터를 순환 같이

 Dim return_value As New List(Of user_class) 
     Dim Hold_user As New user_class 

, SQLreader (0), (1) 및 (2) 새로운 데이터로 업데이트되어, 그러나 또한 RETURN_VALUE 유지 저장된 값을 업데이트하는 것으로 나타 .. ..

Visual Studio에서 버그를 얽히게하고 있습니까? 아니면 Add 메서드에서 ByVal과 같은 것이 필요합니까? (필자가 생각한 ByVal이 아니라는 것을 알고 있습니다. :) 그러나 저는 여러분이 의미하는 바를 얻길 바랍니다.)

답변

4

코드를 수정하여 새로운 당신의 while 루프에서 user_class :

While SQLreader.Read() 
    Dim Hold_user As New user_class 
    Hold_user.username = SQLreader(0) 
    Hold_user.BlahBlahBlah = SQLreader(1) 
    Hold_user.Secret_Password = SQLreader(2) 
    return_value.Add(Hold_user) 
End While 
5

루프를 통해 각 반복마다 새 user_class를 만들어야합니다. 이제 동일한 객체에 대한 많은 참조를 목록에 넣은 다음 하나의 항목을 변경하면 모두 동일한 인스턴스를 가리키기 때문에 모두 변경됩니다.