2010-01-02 15 views
1

我有一個名爲user_class的數據結構(它是一個類),我想從數據庫中加載所有用戶數據。列表功能的添加方法的問題

目前我有

 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 

哪裏RETURN_VALUE是USER_CLASS和hold_user的列表是相同的類的實例。

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

作爲while語句循環通過所讀取的數據,SQLReader的(0),(1)和(2)與新的數據更新,然而,它們也可能在更新在RETURN_VALUE保持所存儲的值.. ..

是糾纏在Visual Studio中的錯誤還是我需要的東西像ByVal,在添加方法(我知道這不是我需要的ByVal我試過:)但我希望你明白我的意思。 )

回答

4

我會修改代碼以實例化一個新的USER_CLASS從內部while循環:

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。現在,你把大量引用的同一個對象到列表中,那麼當你改變一個項目,他們都在改變,因爲他們都指向同一個實例